ie 瀏覽器中 css expression 特性的最大的問(wèn)題:會(huì)反復(fù)執(zhí)行,每秒鐘可能執(zhí)行了成百上千次,有嚴(yán)重的性能問(wèn)題。
如何對(duì) css expression 進(jìn)行優(yōu)化呢?
至少:如果我們將 css expression 在匹配的元素中僅執(zhí)行一次,性能將會(huì)提升很大。
old9 在 《css expression reloaded》一文中提供了一個(gè)解決方案:
在 css expression 語(yǔ)句體里,將觸發(fā)該 expression 的 css 屬性重置。
例如:
div {
zoom: expression(function(el){el.style.zoom = "1"; alert(el.tagname);}(this));
}補(bǔ)充幾點(diǎn):
最近在 ajaxian 的文章《creating a queryselector for ie that runs at “native speed”》 中看到作者 dion almaer 也提供了一個(gè)類似的解決方式:
但此代碼并沒(méi)有完全解決 css expression 最大的性能問(wèn)題。因?yàn)槊看斡|發(fā)還是要去執(zhí)行 expression 腳本,比如你滾動(dòng)鼠標(biāo)的中間滾輪。
最后強(qiáng)調(diào),僅是對(duì) css expression 做了優(yōu)化,但并未說(shuō) css expression 就不存在其他方面的問(wèn)題。
新聞熱點(diǎn)
疑難解答
圖片精選