`
andyhu1007
  • 浏览: 200009 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

IE: Stop running this script?

阅读更多

  问题:

 

  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方法,当然,最好是在当前事件尾部的方法。

分享到:
评论
6 楼 achun 2008-07-03  
请给段代码看看,我还真没有搞明白
5 楼 andyhu1007 2008-07-03  
<div class='quote_title'>achun 写道</div>
<div class='quote_div'>
<div class='quote_title'>andyhu1007 写道</div>
<div class='quote_div'><br/>没错,所以前提是:javascript方法中可以独立的部分。</div>
<p><br/>好像问题比较复杂,<br/>你看看</p>
<p><a href='../../../../../../topic/139428?page=1'>http://www.iteye.com/topic/139428?page=1</a></p>
<p>实际做起来就不是那回事了。</p>
</div>
<p> </p>
<p> </p>
<p>   嗯,谢谢,补充了几句。</p>
4 楼 kimmking 2008-07-02  
xpath是dom方式吧
IE不支持?
3 楼 achun 2008-07-02  
<div class='quote_title'>andyhu1007 写道</div>
<div class='quote_div'><br/>没错,所以前提是:javascript方法中可以独立的部分。</div>
<p><br/>好像问题比较复杂,<br/>你看看</p>
<p><a href='../../../../../../topic/139428?page=1'>http://www.iteye.com/topic/139428?page=1</a></p>
<p>实际做起来就不是那回事了。</p>
2 楼 andyhu1007 2008-07-02  
achun 写道
setTimeout做超时的跳出条件是可以,不过环境变量如何保存呢?
如果是递归的过程呢?
IE的javascript主要慢到正则上了,如果不用正则的话会快很多。


没错,所以前提是:javascript方法中可以独立的部分。
1 楼 achun 2008-07-02  
setTimeout做超时的跳出条件是可以,不过环境变量如何保存呢?
如果是递归的过程呢?
IE的javascript主要慢到正则上了,如果不用正则的话会快很多。

相关推荐

Global site tag (gtag.js) - Google Analytics