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 就不存在其他方面的问题。
新闻热点
疑难解答