<dexbol />

Archive for the ‘Javascript’ Category

如何使YUICompressor保留特定的注释

YUICompressor是很好的javascript压缩工具,它会删除所有的注释和空白符,但有时候我们需要保留一些注释 ,比如版权之类的信息。这个时候我们可以利用YUICompressor不删除ie条件注释的特征来实现:

/*cc_on/*******************************
 *
 *      your information here ........
 *
 *
 ***************************************@*/

Update: 原来可以这样:

/*!
 * information
 */

泪奔….

ie中操作flash节点或其父节点会导致javascript无法调用flash函数

这个bug折腾了我和flasher半天的时间,最后也没找到解决办法,只能用其他方法代替。

用ie打开demo就可以见证这个神奇的bug了。页面加载完后,不管是flash调用javascript还是javascript调用flash都没问题,但当点击上面的按钮,移动flash父节点时,javascript便无法调用flash输出的方法了。

unicode编码转换工具

有时候我们想把javascript写的隐晦一些,比如:alert(’break wind’).这个时候比较简单的方法就是把js代码用16进制的unicode编码来表示,然后eval一下.像下面这样:

alert('break wind');
//还可以这样:
eval('\u0061\u006c\u0065\u0072\u0074\u0028\u0027\u0062\u0072\u0065\u0061\u006b\u0020\u0077\u0069\u006e\u0064\u0027\u0029\u003b');

为了方便我写了一个转换小工具,这样就能很方便的对js代码进行编码了。

关于网页编码的问题推荐阅读这篇文章

配置yui 3.x Loader

感觉yui 3最大特点之一就是模块化,官网给出的例子中也都是从YUI().use()开始的。为了让这种模板化具有可行性,yui提供了一套管理和加载模块的机制(Loader,Get)和ydn提供的combine功能.这样做很好,但它太依赖ydn提供的cdn了,对于个人站来说这样可能既方便又不用占用自己的空间,但对于其他公司来说将js框架放在yahoo提供的免费CDN上肯定不放心,而且没有足够的控制权。要解决这个问题只能让本公司的运维部门也提供一个有cobine功能的cdn网络,但这样会增加很多成本,甚至根本就无法实现(比如公司的cnd采用HTTP 1.0协议)。然而没有cobine又会增加很多http请求次数,比如加载一个”node”,需要请求7个js文件。

一个折中的方法就是根据自己的需求把小模块合成大模块一并加载,可以通过增加Loader中META.modules的属性来实现,比如在modules里添加customize模块:

customize:{
	requires:[YUIBASE]
},
customize2:{
	requires:[YUIBASE,'coustomize']
}

然后在build文件下建立 customize/customize-min.js , 在这个js文件里把需要的多个模块组合进去,customize2同理。

近期准备在一个相对独立的项目中使用yui 3.0.0b1 ,顺便看下yui 3的性能如何。这是我第一次接触yui,感觉yui的确为团队开发做了很多工作,比如模块化和沙盒。

浏览器默认动作是在事件完全结束后执行的

今天才突然想到这个问题,它的意义在于: 不管事件在哪个元素上发生,发生在哪个阶段,都可以取消浏览器默认事件动作。

http://dexbol.com/demo/javascript/note/browser_default_action.html

儿时的拼图游戏

最近学习mootools,看了一遍文档,小试牛刀一下。

还记得儿时的拼图游戏吗?

http://dexbol.com/demo/javascript/jigsaw_puzzle.html