igwdz

Uncategorized

跨浏览器剪切板访问解决方案

在改善”小可”(http://code.wanz.im/)的使用体验的过程中遇到一个问题,那就是需要通过JavaScript将Ajax返回得到的URL复制到剪切板,我第一想到的就是下面的代码 JavaScript 1window.clipboardData.setData('text', sometext); 很不幸的是,这句是IE ONLY的,于是需要兼容.后来我找到一段代码,我以为除了IE外,其他的都可以使用. JavaScript netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');var clip = Components.classes['@mozilla.org/widget/clipboard;1'] .createInstance(Components.interfaces.nsIClipboard);if (!clip) return;var trans = Components.classes['@mozilla.org/widget/transferable;1']   .createInstance(Components.interfaces.nsITransferable);if (!trans) return;trans.addDataFlavor('text/unicode');var str = new Object();var len = new Object();var str = ....

Uncategorized

“小可”,丸子的在线代码分享编辑器

[2013-09-21]已发布新版更新:http://i.wanz.im/2013/09/21/little-code-rebuilt/ 中午突然想写这么一个在线代码编辑器,主要是为了大家讨论问题的时候方便分享代码,虽然已经不是什么新鲜的东西了,但还是值得一做.于是花了一个下午时间,学习了下Edit Area文档并写了这么一个页面.功能还不完善,我会继续维护加强的.取了个可爱的名字:小可.O(∩_∩)O~ 前往围观=>http://code.wanz.im/ 欢迎大家给我反馈意见,我也有自己的一些想法了.下一步要做的是: 支持插入各种流行的JavaScript library或framework.[一直在进行]优化细节,改善使用体验[一直在进行]加入zen coding插件[已支持]

Uncategorized

前端博客搜索

想写这个插件也是纯属偶然,话说2010年1月12日,百度突然不能访问,页面上显示被伊朗网络军队入侵,具体是啥原因咱也不研究了,平常我是用百度做首页的,虽说我更喜欢Google,但基本上百度的一些东西符合我的使用习惯,既然它挂了,我也就奔着Google去了,遂将首页改为Google.想不到第二天[2010年1月13日]Google要退出中国市场的消息又搞得沸沸扬扬.不管这些了,关键是某MM她习惯用百度搜索一些东西,包括百科,MP3等,于是我便到IE8 addons里去翻,看到分类里有个地图,我就想啊,貌似地图搜索也经常用到,也顺便给加一个吧,可惜了,没有我平常用的某地图的addon,于是我想自己开发一个,接着我又想,平常经常翻读各位前端大牛的博客,有时候一个知识点忘记了在哪里看到的,又急着要找,又要去翻,甚是麻烦,于是乎这个”前端博客搜索”就这样诞生了.[2012-06-29]搜索页面年久失修,推荐使用Chrome扩展:前端博客搜索 如果你有收藏觉得不错的前端博客或者你觉得自己也想加入的话,欢迎联系我哦!

Uncategorized

短地址还原

一个下午无聊的”杰作”.之前Leeiio同学的博客上写过这样的一篇文章RealURL,还原你的短地址!,我之前跟Leeiio讨论过,他的思路给了我启发,今天下午突然想练练php,于是有了这东西.简单测试了几个短地址,全部通过.本人并不擅长php,难免写得有缺陷,如果你有发现失败的记得给我留言哦!测试地址:http://www.wanz.im/demo/realurl.php 由于性能问题,接口不提供批量查询,放出核心代码给大家^_^ PHP function get_final_url( $url, $timeout = 10 ){ $url = str_replace( "&", "&", urldecode(trim($url)) ); $cookie = tempnam ("/tmp", "CURLCOOKIE");    $ch = curl_init();    curl_setopt( $ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows ....

Uncategorized

IE下,写innerHTML出现未知的运行时错误

前天把之前写的Ajax代码稍微的修改下,结果在ie下竟然报错了,说是:”未知的运行时错误”.我晕,但是在Firefox下的表现是正常的.我只是修改了下几个标签的内容,照理说不会有问题的,而且原来也是一直很正常的,这让我感到很困惑.于是,我在网上搜寻了一番,网上的看到的解释是: 这主要是IE在对innerHTML进行写操作的时候会检查element是否具备做为这些内容中html对象容器的要求,比如如果你是在一个p里加入包含<li>的html代码,这是会出错的。所以如果你发现这些错误出现,尝试做两件事情:1、检查你尝试加到innerHTML的html代码是否包含破损的html标签,如没有<ul></ul>包围的<li></li>.2、把你的容器改成那些比较“包容”的标签,如<span></span>,<div></div>特别注意的是<tbody>,<table>,<tr>标签里面加正确格式的<td>标签都有可能出错,所以应该避免使用这些标签作为容器,必要时可以用<td>作为容器,再嵌套一层表格。 这段描述让我想起我刚才改了的标签,我把原来的容器由div改成了p,而返回的内容里是3个ul列表,虽然标签是闭合的,但p不能包含ul列表!因为在嵌套规则里,p应该是包含inline元素的,而ul是block元素,所以才出现了前面说的那个错误,于是我把标签改了回去,果然又正常了.

Uncategorized

php怪异编码问题

问题是这样产生的:我想写一个php来遍历当前php所在文件夹下的文件及目录,因此写了下面的代码. PHP <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>丸子的Demonstration</title></head><body><?php function lsfile(){$files=glob('*');//scandir(dirname(__FILE__));foreach($files as $val)if($val!="." and $val!=".." and $val!="index.php")echo "<li><a href=\"".urlencode($val)."\">".$val."</a></li>";}?><ol id="demo"><?phplsfile();?></ol></body></html> 可是事实并没有我想的这么简单,$val输出的中文是乱码!于是,我按照常规的编码检查方式查了一遍,发现文件编码是utf-8,meta设置的是utf-8,浏览器使用的还是utf-8,编码都是一致的,而且如果是直接echo中文的话,并不会是乱码,那么问题出在哪里呢?跟几个朋友讨论后未果.Along说把文件保存成ANSI,再保存成utf-8,失败!文件发给netseye测试,正常显示中文!难道是我本地服务器的问题?或者是php函数读取中文时的问题?于是,我上传到我的php空间访问,乱码!于是,我纠结了!但是,我有一个发现,如果浏览器编码改成gb2312,中文就正常显示了!这是为什么呢?知道了这个以后,我有了临时的解决方案:将中文输出前先转换编码,转换方式为iconv(“gb2312″,”utf-8″,$val);完整代码如下: PHP <!DOCTYPE html ....

Uncategorized

JS图片加载与获取远程图片大小

哎,过了个国庆,我那个堕落呀…博客都长草了…其实还有一个主要原因是我的本本屏幕出问题了,没心情对着它,昨天去换了个屏幕,感觉那怎么就不是我的本本了… 之前有看到群里有人问用js实现图片加载的,原来死去的blog上是有Demo的,挂了!后来又有人问了用js获取远程图片大小,就顺便写一下好了一起放上来,看Demo. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>JS图片加载与获取远程图片大小</title> </head> <body> <input id="path" value="http://www.google.cn/intl/zh-CN/images/logo_cn.gif" style="width:400px" /><button onclick="loadpic($('prev'),$('path').value)">加载</button><button onclick="getImgSize($('path').value);">获取大小</button> <div id="prev"></div> ....

Uncategorized

javascript类的实现及原理的理解

类,是面向对象编程中一个很重要的概念.一直很遗憾JavaScript中没有实质的类的定义,但这并不会影响我们在JavaScript实现类的操作.在学习JavaScript的过程中,我也了解了JavaScript中对一些高级语言中的类的模拟实现方式,实现的形式不一,但是不管是怎样的形式,它们实质上都是用构造函数模拟类,如 var aClass=function(){};…var anInst=new aClass(); 虽然知道如此,但是对于这些实现的方式,还是很困惑,原因在于,它们的区别是什么?都有什么各自的优缺点?能否真正实现类的模拟?是否有更好的方式来实现?这些问题一直困扰着我,也是本文中要思考的问题. 为了更直观的进行对比,我们先来看一段C++中类的定义和实例化的代码 C 12345678910111213141516171819202122232425262728#include "iostream"using namespace std;/**Person类的定义*其中,name是该类的私有成员变量*Person(char *name)是类的构造函数*say()方法是类的成员方法*/class Person{private: char *name;public: void say();//成员函数的声明 Person(char *name){ this->name=name; };};void Person::say(){//成员函数的实现 ::cout<<"hi,我是"<<this->name<<endl;};int main(){ Person *wanz=new Person("丸子");//类的实例化 wanz->say();//类的实例访问成员函数,输出:hi,我是丸子 Person ....

Uncategorized

一个求布尔值引起的问题

JavaScript森林里的ToFishes同学问的问题: ToFishes(446187399) 16:30:47var str = ” “;//这里有两个空格alert(str==false);if(str) {alert(1);}; 各位,这里会是什么结果?想,不要测试啊 这实际不是很难的问题,但是很多人都回答错了!为什么?因为我们都习惯了知其然,不知其所以然,一般的效果都会做,遇到这样的运算的时候就蒙了,那个str的值是不是false?.我们先来运行一下下: <script type="text/javascript"> var str = " ";//这里有两个空格 alert(str==false); if(str) { alert(1); }; </script> 提示:你可以先修改部分代码再运行。 看了结果如果你也很疑惑,实际上,这个疑惑来自你对运算符不了解,str并不像你看到的那样==false.接下来看看到底是为什么?我们先来看if条件语句,if在判断表达式的时候,做了一个操作就是将表达式求值后转化为布尔型(ToBoolean)然后进行判断,而这个ToBoolean对表达式值的操作有一套规则,当表达式值为以下情况时的返回结果: 1.Undefined:返回false2.Null:返回false3.Boolean:直接判断4.Number:为+0, −0,or NaN返回false,否则是true.5.String:如果字符串为空返回false(它的length为0),否则为true.6.Object:true 我们很容易看出例子中if语句的运行结果.而比较符”==”的比较算法是相当的复杂,不过也很容易可以得到我们想要的答案,顺便提一下,在了解完”==”的比较算法后,强烈建议再看看”===”的算法,这样有助于深刻理解他们的区别,也能够清楚什么时候该用”==”或”===”.好了我们来看下”==”的比较算法:假设我们有这样的比较:x==y: 1. ....

Uncategorized

关于setTimeout的一点事

rekey曾问我的一个问题,关于setTimeout的语法,我想是因为先入为主的原因导致的他的疑问,很多人很多时候,我们是酱紫写的:setTimeout(func,timeTick);其实介个函数还有另外一个形式:setTimeout(sCode,timeTick);介个sCode是一个代码片段,实际上就是一个字符串,字符串里的内容相当于函数体里的代码,我们来看个简单的例子 <script type="text/javascript"> function test(){ alert(/see?/); } setTimeout(test,1000);//一般写法 setTimeout("test()",1000); //这里相当于setTimeout(function(){test();},1000); setTimeout("alert(/see again?/);",1000);//字符串的内容就是函数体内容 </script> 顺便提一下setTimeout中函数如何传参数,这里用了闭包 <script type="text/javascript"> function para(i){ return function(){alert(++i);} } var i=3; setTimeout(para(i),1000); </script>