IE 浏覽器中 CSS Expression 特性的最大的問題:會反復執行,每秒鐘可能執行了成百上千次,有嚴重的性能問題。
如何對 CSS Expression 進行優化呢?
至少:如果我們將 CSS Expression 在匹配的元素中僅執行一次,性能將會提升很大。
old9 在 《CSS Expression Reloaded》一文中提供了一個解決方案:
在 CSS Expression 語句體裡,將觸發該 Expression 的 CSS 屬性重置。
例如:
div {
zoom: expression(function(el){el.style.zoom = "1"; alert(el.tagName);}(this));
}
補充幾點:
最近在 AJaxian 的文章《Creating a querySelector for IE that runs at “native speed”》 中看到作者 Dion Almaer 也提供了一個類似的解決方式:
但此代碼並沒有完全解決 CSS Expression 最大的性能問題。因為每次觸發還是要去執行 Expression 腳本,比如你滾動鼠標的中間滾輪。
最後強調,僅是對 CSS Expression 做了優化,但並未說 CSS Expression 就不存在其他方面的問題。