问题:
1. 用IE浏览页面,如果一个Javascript method running过长,会跳出:Stop running this script?的error.
2. 而在firefox下完好,速度很快。
原因:
IE不支持XPath ,这是导致prototype的select方法在IE下采用遍历的方式,很慢。XPath和纯粹遍历比起来,速度要快好像不止一个数量级。
解决方案:
使用javascript的setTimeout异步触发可以从running过长的javascript方法中独立的部分,实际上是骗了IE...
异步是王道啊..
--------------------------
补充:
1. IE判断javascript运行过长是基于任一个事件触发的javascript运行,而不是在load页面时总的javascript运行时间。
2. javascript引擎只是一个单一的线程,所以任何在中途触发的异步事件都会被强制排队等待执行。
3. 所以用setTimeout解决IE error比较适合没有上下文依赖的javascript方法,当然,最好是在当前事件尾部的方法。