Javascript:无响应的脚本错误

ane*_*yzm 10 javascript

我从Firefox"Unresponsive script"收到错误消息.此错误是由于我添加到我的页面的一些JavaScript.

我想知道无响应是否仅由代码循环引起(函数周期性地相互调用或无休止地"循环")或者可能有其他原因?

你能帮我调试一下这些错误吗?

谢谢

小智 10

避免这种情况的一种方法是使用这样的超时来包装您的性能不佳的代码:

setTimeout(function() {
 // <YOUR TIME CONSUMING OPERATION GOES HERE>
}, 0);
Run Code Online (Sandbox Code Playgroud)

这不是防弹解决方案,但在某些情况下可以解决问题.


Dam*_*son 8

根据Mozzila Knoledgebase的说法:

当JavaScript代码运行的时间超过预定义的时间时,Firefox将显示一个对话框,显示警告:无响应脚本.此时间由设置dom.max_script_run_time和dom.max_chrome_script_run_time给出.增加这些设置的值将导致警告显示较少,但会失败:通知您扩展程序或网站的问题,以便您可以停止失控脚本.

此外:

找到问题的根源

要确定哪个脚本运行时间过长,请单击警告对话框上的"停止脚本"按钮,然后转到"工具"| 错误控制台.错误控制台中的最新错误应识别导致问题的脚本.

检查错误控制台应该很明显你的javascript的哪个部分导致了这个问题.从那里,要么删除有问题的代码,要么以不会占用大量资源的方式对其进行更改.

编辑:正如对该主题作者的评论中所提到的,强烈建议使用Firebug来调试javascript问题.Jonathan Snook有一个关于使用断点来调试复杂javascript片段的有用视频.