浏览 3874 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-07-02
问题:
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方法,当然,最好是在当前事件尾部的方法。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-07-02
setTimeout做超时的跳出条件是可以,不过环境变量如何保存呢?
如果是递归的过程呢? IE的javascript主要慢到正则上了,如果不用正则的话会快很多。 |
|
返回顶楼 | |
发表时间:2008-07-02
achun 写道 setTimeout做超时的跳出条件是可以,不过环境变量如何保存呢?
如果是递归的过程呢? IE的javascript主要慢到正则上了,如果不用正则的话会快很多。 没错,所以前提是:javascript方法中可以独立的部分。 |
|
返回顶楼 | |
发表时间:2008-07-02
andyhu1007 写道
没错,所以前提是:javascript方法中可以独立的部分。
http://www.iteye.com/topic/139428?page=1 实际做起来就不是那回事了。 |
|
返回顶楼 | |
发表时间:2008-07-02
xpath是dom方式吧
IE不支持? |
|
返回顶楼 | |
发表时间:2008-07-03
achun 写道
andyhu1007 写道
没错,所以前提是:javascript方法中可以独立的部分。
http://www.iteye.com/topic/139428?page=1 实际做起来就不是那回事了。
嗯,谢谢,补充了几句。 |
|
返回顶楼 | |
发表时间:2008-07-03
请给段代码看看,我还真没有搞明白
|
|
返回顶楼 | |