避免“;是否停止脚本"IE中的对话框

Avoiding "Stop Script?" Dialog in IE

本文关键字:IE quot 对话框 脚本 是否 避免      更新时间:2023-09-26

我有一些计算量很大的Javascript代码,我想作为应用程序的一部分运行。我知道我正在与UI线程共享资源,所以我把UI分解成块,并使用Angular的$timeout一次执行每个小块,从而使UI的响应能力非常强。这很好,除了在InternetExplorer8中,我总是收到提示"停止运行这个脚本?"

我如何理解IE8的"脚本太多"阈值,以便我可以绕过它?我经常将控制权返回到主线程,以便应用程序在其他浏览器中能够响应并没有问题。我没有任何无限循环的情况。

IE8的"慢脚本"概念是基于它执行的操作数量,而不是像其他浏览器那样的任何一段时间。来自KB175500:

从Internet Explorer 4.0起…超时不再是基于Windows消息的固定值。Internet Explorer现在跟踪已执行脚本语句的总数,并在每次开始执行新脚本时重置值。。。

因此,如果您执行了大量快速执行的脚本语句,您仍然可以在较短的时间内达到极限。

调试和解决这一问题需要减少每次迭代(在您的情况下是每次$timeout调用)所需的工作量,直到问题消失(遗憾的是,IE8不支持web工作者)。

我还没有尝试过,但我建议你不要使用超时,而是发布一个事件并捕获它来处理下一个区块,等等…希望这能欺骗IE,请告诉我们。