怎样为IE浏览器的javascript提速( 二 )


var doc = document;var document = doc;这样明显不行因为在预编译阶段 , var变量会提前 , 上面代码相当于
var docvar document//这里被劫持了doc = document //注意 , document已经变成undefineddocument = doc //相当于window.undefined = undefined没有办法 , 只好在执行期才定义这个document变量 , javascript的动态解析技术派上用场了 , eval就是其代表之一 。
var doc = document;eval(’var document = doc’);为了让IE专用 , 用了IE特有的条件编译 。
/*@cc_onvar doc = document;eval(’var document = doc’);@*/嘛 , window的东西其实蛮多 , 我们一一把它们变成本地变量又如何?
/*@cc_oneval((function(props) {var code = [];for (var i = 0 l = props.length;il;i){var prop = props[i];window[’_’ prop]=window[prop];code.push(prop ’=_’ prop)}return ’var ’ code.join(’,’);})(’document event body location title self top parent alert setInterval clearInterval setTimeout clearTimeout’.split(’ ’)));@*/我们可以再扩展一下 , 让其更多全局变量或全局方法局部化 。不过经验测 , FF使用它会报错 , chrome则慢了 , 其他浏览器不明显 。
if( ! v1){var code = [],ri = 0,prop,str = varfor(var a in window)code[ri] = a;for (var i = 0 ,n = code.length;in;i){var prop = code[i]window[’_’ prop] = window[prop];str= prop ’=_’ prop ,}str = str.slice(0,-1);eval(str)}!doctype html
html dir=ltr lang=zh-CN
head
meta charset=utf-8/
titlejavascript提速技术 by 司徒正美/title
script type=text/javascript
var __chrome = navigator.userAgent.indexOf(Chrome) !== -1;
var __firefox = !!window.Components
if( !__chrome!__firefox ){
var code = [],ri = 0,prop,str = var
for(var a in window)
code[ri] = a;
for (var i = 0 ,n = code.length;in;i){
var prop = code[i]
window[’_’ prop] = window[prop];
str= prop ’=_’ prop ,
}
str = str.slice(0,-1);
eval(str)
}
var date = new Date;
for (var i = 0; i100000; i)
document;
alert(new Date - date);
/script
/head
body
!!!!!!
/body
/html
文章来源:http://www.cnblogs.com/rubylouvre/archive/2010/02/11/1667628.html
【怎样为IE浏览器的javascript提速】虽然IE8的发布并没有给我们带来多大的惊喜 , 但根据微软所公布了IE9的各种评测效能信息 , 惊奇的发现 , IE9在而针对Javascript引擎性能的SunSpider测试中 , IE9大幅超越了IE7与IE8 , 并与Chrome、Safari及Firefox浏览器的Javascript运行基本处于同一等级 。希望微软以后不要在重蹈IE8的覆辙 , 毕竟微软现在出新浏览器的动作是越来越勤奋了 , 记得当前IE6了 , 不知用了多少年 , 才听说有了IE7了 , 到现在IE8才超越IE6成为全球最流行的浏览器版本 , 我们期盼微软IE9浏览器能够让竞争对手刮目相看 。

推荐阅读