我需要加载第三方脚本文件(我没有任何控制权),但我想避免挂起页面,以防脚本中有无限循环。我尝试调用 javascript 文件并将其放入更新面板中,只需单击一个按钮,但页面仍然挂起。我什至尝试将它放在 iframe 中,只是为了将它与其他控件分开,并且会发生相同的情况。
一旦无限循环开始执行,真的没有办法停止它吗?
我需要加载第三方脚本文件(我没有任何控制权),但我想避免挂起页面,以防脚本中有无限循环。我尝试调用 javascript 文件并将其放入更新面板中,只需单击一个按钮,但页面仍然挂起。我什至尝试将它放在 iframe 中,只是为了将它与其他控件分开,并且会发生相同的情况。
一旦无限循环开始执行,真的没有办法停止它吗?
您正在尝试为已经修复的错误添加处理,因此将发生的所有事情都是您的代码将不必要地变得更加复杂。
我相信他们已经生成的修复程序,您可以考虑添加单元测试,以便您以安全的方式测试错误
编辑 如果您认为错误仍然存在,那么您可以创建一个小测试示例(即您的单元测试)发送给第三方,希望得到更好的修复
用于debugger;
调试脚本文件。将debugger;
符号开头的脚本方法将在 chrome 中执行和运行(因为它很容易调试)。单击 F12 打开调试器工具。脚本执行将在您放置的行停止并逐行debugger;
调试。
如果脚本正在执行无限循环,则 chrome 选项卡将崩溃并显示消息“Aw,Snap!” . 您可以参考调用堆栈来查找导致问题的方法。
一种可能的解决方案是使用Web Worker并在其中运行您的 JS 代码。过了一会儿,如果它没有任何反应,就打电话worker.terminate()
“杀死”它。
请注意,Web Worker 有很大的限制:例如,您不能从运行在 Web Worker 范围内的代码中访问 UI 元素,并且旧浏览器不支持它。
我不知道网络工作者是否适合您的情况,但这个选项可能会有所帮助。