我有一些计算量大的 Javascript 代码,我想将其作为我的应用程序的一部分运行。我知道我正在与 UI 线程共享资源,因此我通过将 UI 分成 block 并使用 Angular 的 $timeout 一次执行每个小块来使 UI 响应迅速。这工作正常,除了在 Internet Explorer 8 中,我总是收到提示“停止运行此脚本?”
我如何理解 IE8 的“脚本过多”阈值,以便我可以解决它?我经常将控制权返回主线程,以便应用程序在其他浏览器中响应迅速且无问题。我没有任何无限循环情况或任何事情。
最佳答案
IE8 的“慢脚本”概念是基于它执行的操作数量,而不是像其他一些浏览器那样的任何设定的时间段。来自 KB175500 :
As of Internet Explorer 4.0...the time-out is no longer a fixed value based on Windows messages. Internet Explorer now tracks the total number of executed script statements and resets the value each time that a new script execution is started...
因此,如果您执行大量快速执行的脚本语句,您仍然可以在较短的时间内达到极限。
调试和解决这个问题是减少每次迭代(在您的情况下是每次 $timeout
调用)所做的工作量,直到问题消失(遗憾的是,因为 IE8 doesn't 支持 web workers )。
关于javascript - 避免 IE 中的 "Stop Script?"对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18366586/