日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

怎樣為IE瀏覽器的javascript提速

隨著現(xiàn)在網(wǎng)頁(yè)設(shè)計(jì)越來(lái)越多的應(yīng)用javascript技術(shù) , 而且瀏覽器的Javascript引擎運(yùn)行速度也成為各大瀏覽器比拼性能的重要指標(biāo) , 各家瀏覽器廠商皆宣稱他們的瀏覽器速度更快 , 希望攪動(dòng)現(xiàn)存的競(jìng)爭(zhēng)態(tài)勢(shì) 。IE8瀏覽器的Javascript運(yùn)行速度雖然相對(duì)于IE7以及IE6有著很大的提升 , 但相對(duì)于Webkit引擎的瀏覽器還是有一定的差距 , 在去年的ZDNET Javascript測(cè)試上Chrome瀏覽器表現(xiàn)突出 , 一舉擊敗Firefox、Safari和微軟的IE瀏覽器 。不過(guò)因?yàn)镮E瀏覽器相對(duì)龐大的使用人群 , 我們有必要為IE瀏覽器的javascript來(lái)提提速 。
我們知道 , 瀏覽器在執(zhí)行期時(shí)是由內(nèi)到外執(zhí)行腳本的 , 那么離我們的腳本最遠(yuǎn)的全局對(duì)象 , 很可能要跨越幾層作用域才能訪問(wèn)到它 。不過(guò)在IE瀏覽器中 , 從最內(nèi)層到最外層要花的時(shí)間比其他多出很多 。加之 , javascript是一種膠水語(yǔ)言 , 它必須要調(diào)用DOM對(duì)能完成我們大多數(shù)選擇 。最著名的就是選擇元素(document.getElementById,document.getElementsByTagName,docuemnt.evaluate,document.querySelector) , 創(chuàng)建元素(document.createElement) , 此外還有document.body , document.defaultView.getComputedStyle等等 , 頻繁地調(diào)用document對(duì)象 , 但是document是位于window對(duì)象下 , 因此這路程就更遠(yuǎn)了 。就了提速 , 我們必須把它們保存在一個(gè)本地變量 , 那么每次就省得它長(zhǎng)途跋涉了 。這種技術(shù)的運(yùn)用明顯體現(xiàn)在jQuery的源碼中:
(function( window, undefined ) {// Define a local copy of jQueryvar jQuery = function( selector, context ) {// The jQuery object is actually just the init constructor ’enhanced’return new jQuery.fn.init( selector, context );},// Map over jQuery in case of overwrite_jQuery = window.jQuery,// Map over the $ in case of overwrite_$ = window.$,// Use the correct document accordingly with window argument (sandbox)document = window.document,//====================省=================}// Expose jQuery to the global objectwindow.jQuery = window.$ = jQuery;})(window);把window傳進(jìn)閉包內(nèi) , 就省得它每次都往外找window了 。
再看其他類庫(kù)
//Raphaelwindow.Raphael = (function () {var separator = /[, ] /,elements = /^(circle|rect|path|ellipse|text|image)$/,doc = document,win = window,//************略**************//dojod.global = this;//ExtDOC = document,//YUI//************略************} else if (i == ’win’) {c[i] = o[i].contentWindow || o[i];c.doc = c[i].document;//************略************Y.config = {win: window || {},doc: document,但是如果你沒(méi)有引入類庫(kù) , 如果讓IE的javascript跑得更快些呢?用一個(gè)變量把它儲(chǔ)存起來(lái)?在一個(gè)國(guó)外的博客看到一種很厲害的劫持技術(shù) , 偷龍轉(zhuǎn)鳳把全局變量document變成一個(gè)局部變量 。
/*@cc_on _d=document;eval(’var document=_d’)@*/!doctype html
html dir=ltr lang=zh-CN
head
meta charset=utf-8/
titlejavascript提速技術(shù) by 司徒正美/title
script type=text/javascript
var date = new Date;
for (var i = 0; i100000; i) document;
alert(new Date - date);
/script
/head
body
/body
/html
運(yùn)用提速技術(shù)后:
!doctype html
html dir=ltr lang=zh-CN
head
meta charset=utf-8/
titlejavascript提速技術(shù) by 司徒正美/title
script type=text/javascript
/*@cc_on _d=document;eval(’var document=_d’)@*/
var date = new Date;
for (var i = 0; i100000; i) document;
alert(new Date - date);
/script
/head
body
!!!!!!!!
/body
/html
經(jīng)測(cè)試 , 用了提速技術(shù)后 , IE的性能比較
IE6documentdocument.getElementByIddocument.title沒(méi)有使用提速技術(shù)48511101219使用提速技術(shù)后109609656IE8documentdocument.getElementByIddocument.title沒(méi)有使用提速技術(shù)468797843使用提速技術(shù)后78328407我們看一下實(shí)現(xiàn)原理:
document;doc;//很明顯 , 調(diào)用這個(gè)比直接document快 , document還要鉆進(jìn)window內(nèi)部找一番如何劫持它呢?

推薦閱讀