我有一个JavaScript函数,其中包含一个for循环,该循环重复了很多次。 调用此函数后,IE浏览器将显示以下消息:
停止运行此脚本? 此页面上的脚本导致您的Web浏览器运行缓慢。如果继续运行,则您的计算机可能无响应。
我怎样才能解决这个问题? 无论如何,我可以从IE禁用此消息吗?
当InternetExplorer达到一段JavaScript的最大同步指令数时,将显示此消息。默认最大数量为5,000,000条指令,您可以通过编辑注册表在单台计算机上增加此数量。
现在,Internet Explorer跟踪脚本引擎当前页面的已执行脚本语句总数,并在每次启动新脚本执行时重置该值,例如超时或事件处理程序。 当该值超过阈值量时,Internet Explorer将显示一个“长时间运行的脚本”对话框。
对于可能正在查看您的页面的所有用户而言,解决问题的唯一方法是分摊循环使用计时器执行的迭代次数,或重构代码以使其不需要处理那么多指令。
使用计时器打破循环相对简单:
var i=0; (function () { for (; i < 6000000; i++) { /* Normal processing here */ // Every 100,000 iterations, take a break if ( i > 0 && i % 100000 == 0) { // Manually increment `i` because we break i++; // Set a timer for the next iteration window.setTimeout(arguments.callee); break; } } })();