2008-11-17 136 views
8

我正在开发一个广泛使用JavaScript(jQuery)的网站。我经常收到IE'停止运行这个脚本?'错误对话框,当我尝试关闭浏览器。“停止运行此脚本?”错误

我猜这个问题的发生是因为该网站是一个使用AJAX的页面,因此没有回传来重置IE执行的命令数。

客户端注册表黑客攻击不是一个选项。

有没有人知道一种方法来解决这个错误?

更新:页面有一个数字(〜10)间隔计时器,持续轮询30或60秒间隔。

+0

你可能想看看为这个问题发布的答案“[这个页面上的脚本导致即运行缓慢](http://stackoverflow.com/questions/212550/a-script-on-this-页面被致病,即对运行慢)”。 – 2008-11-18 05:11:50

回答

3

你是否偶然使用window.onunload处理程序?如果你这样做,你可能会检查你没有无限循环。

要检查,在你的JavaScript的底部做:

window.onunload = null; 

并再次测试。

+0

这在我的情况下不是问题。我只是在页面中运行一个长脚本。 – liammclennan 2011-05-22 07:46:24

+0

@liammclennan所以,你有一个只是总是(或几乎总是)运行的脚本,但只有在关闭标签时才会出现警告? – 2011-05-23 18:29:25

1

您的代码中只有一些长时间运行的脚本/无限循环。更多细节可能会得到更准确的答案。

如果您的页面正在使用大量的时间间隔,那么在导航离开页面之前,您需要取消它们。使用window.onunload清除所有间隔。

4

我也遇到过这个问题,并通过分割持续的DOM执行来克服这个问题。对于这种方法,我使用了setTimeout函数。解决这个问题完全取决于你如何划分连续执行。

+0

setTimeout是要走的路! 在IE8中进行测试,并通过超过5,000个项目的大型AJAX数据集进行测试。 – 2013-04-30 18:13:21

1

我只是blogged about this并把我认为是一个非常时尚的解决方案。所以看看。如上所述,我的解决方案只是将长时间运行的操作分解为块,但我提供了一个很好的工具类来执行此操作。

+0

你的解决方案很有趣。我没有尝试过,但如果它有效,那么它非常有用。 – liammclennan 2011-05-22 07:45:43

0

也可以考虑长期运营分成的$(document)。就绪()和$(窗口).load()

0

我刚刚与太笼统jQuery选择的问题:例如$("*")

2

问题:“停止运行此脚本?”错误

解决方法:你可以说这是一个兼容性问题或错误一样的东西,而在Mozilla任何错误运行,但它在IE 6,7或运行8,并显示错误消息“停止运行此脚本”。微软已经提供了一个补丁来修复IE中的这个问题。所以,请到以下链接并下载“Microsoft修复”,并安装相同并重启浏览器,你将永远看不到“停止运行此脚本”错误: http://support.microsoft.com/kb/175500#FixItForMeAlways

0

喜欢谁提到$的人(“*”),尽量不要使用$(this)作为自定义事件的绑定选择器,这会导致我的最新脚本破坏系统的加载时间。