处理第三方javascript文件中的无限循环(c#.net)

时间:2013-07-23 10:06:42

标签: c# javascript .net infinite-loop hang

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

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

3 个答案:

答案 0 :(得分:1)

您正在尝试为已修复的错误添加处理功能,因此所有发生的情况都会导致您的代码变得更加复杂。

我会相信他们已经制作的修复程序,您可以考虑添加Unit Tests,以便以安全的方式测试错误

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

答案 1 :(得分:0)

一个 可能的 解决方案可能正在使用Web Worker并在其中运行您的JS代码。过了一会儿,如果没有任何响应,请拨打worker.terminate()以“杀死”它。

请注意Web工作者有很大的局限性:例如,您无法从Web作业域范围内运行的代码中访问UI元素,并且旧浏览器不支持它。

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

答案 2 :(得分:0)

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

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