1

我需要加载第三方脚本文件(我没有任何控制权),但我想避免挂起页面,以防脚本中有无限循环。我尝试调用 javascript 文件并将其放入更新面板中,只需单击一个按钮,但页面仍然挂起。我什至尝试将它放在 iframe 中,只是为了将它与其他控件分开,并且会发生相同的情况。

一旦无限循环开始执行,真的没有办法停止它吗?

4

3 回答 3

1

您正在尝试为已经修复的错误添加处理,因此将发生的所有事情都是您的代码将不必要地变得更加复杂。

我相信他们已经生成的修复程序,您可以考虑添加单元测试,以便您以安全的方式测试错误

编辑 如果您认为错误仍然存​​在,那么您可以创建一个小测试示例(即您的单元测试)发送给第三方,希望得到更好的修复

于 2013-07-23T10:22:50.920 回答
0

用于debugger;调试脚本文件。将debugger;符号开头的脚本方法将在 chrome 中执行和运行(因为它很容易调试)。单击 F12 打开调试器工具。脚本执行将在您放置的行停止并逐行debugger;调试。

如果脚本正在执行无限循环,则 chrome 选项卡将崩溃并显示消息“Aw,Snap!” . 您可以参考调用堆栈来查找导致问题的方法。

于 2013-07-23T10:22:12.560 回答
0

一种可能的解决方案是使用Web Worker并在其中运行您的 JS 代码。过了一会儿,如果它没有任何反应,就打电话worker.terminate()“杀死”它。

请注意,Web Worker 有很大的限制:例如,您不能从运行在 Web Worker 范围内的代码中访问 UI 元素,并且旧浏览器不支持它。

我不知道网络工作者是否适合您的情况,但这个选项可能会有所帮助。

于 2013-07-23T10:18:56.677 回答