论坛首页 Web前端技术论坛

IE: Stop running this script?

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

   发表时间:2008-07-02  
setTimeout做超时的跳出条件是可以,不过环境变量如何保存呢?
如果是递归的过程呢?
IE的javascript主要慢到正则上了,如果不用正则的话会快很多。
0 请登录后投票
   发表时间:2008-07-02  
achun 写道
setTimeout做超时的跳出条件是可以,不过环境变量如何保存呢?
如果是递归的过程呢?
IE的javascript主要慢到正则上了,如果不用正则的话会快很多。


没错,所以前提是:javascript方法中可以独立的部分。
0 请登录后投票
   发表时间:2008-07-02  
andyhu1007 写道

没错,所以前提是:javascript方法中可以独立的部分。


好像问题比较复杂,
你看看

http://www.iteye.com/topic/139428?page=1

实际做起来就不是那回事了。

0 请登录后投票
   发表时间:2008-07-02  
xpath是dom方式吧
IE不支持?
0 请登录后投票
   发表时间:2008-07-03  
achun 写道
andyhu1007 写道

没错,所以前提是:javascript方法中可以独立的部分。


好像问题比较复杂,
你看看

http://www.iteye.com/topic/139428?page=1

实际做起来就不是那回事了。

 

 

   嗯,谢谢,补充了几句。

0 请登录后投票
   发表时间:2008-07-03  
请给段代码看看,我还真没有搞明白
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics