你如何在Javascript中停止无限循环?

时间:2009-05-25 04:34:51

标签: javascript

让我说我不小心写了这个:

 do { } while (true);

...然后运行它。除了杀死你的浏览器,有没有办法阻止javascript执行(相当于基本的Ctrl + Break,或者Ctrl + C)?

通常,大约30秒后,您的浏览器会询问您是否要停止长时间运行的脚本,但这并不总是会发生(正如我刚刚发现的那样)!

仅供参考:一个简单的循环:for (i=1; i > 0; ++i);会导致我的浏览器崩溃(Firefox 3.5b4)。我感觉不太像测试它是否是我的任何附加组件。连续重启我的浏览器不是我周一晚上的一个有趣的想法。

10 个答案:

答案 0 :(得分:43)

我使用的是Chome版本45.0.2454.101

在右上角的汉堡菜单中,点击更多工具>任务管理器,然后从那里杀死选项卡。这是因为尝试关闭选项卡失败。否则一个简单的' X'在选项卡上杀死它。

答案 1 :(得分:26)

2018更新:

在Chrome 67中,如果打开了DevTools( F12 ),则可以终止无限循环而不会杀死整个选项卡:

  • 转到面板,然后单击“暂停脚本执行”。
  • 按住相同的按钮,然后选择“停止”图标。

enter image description here

https://developers.google.com/web/updates/2018/04/devtools#stop

答案 2 :(得分:20)

至少在Chrome上,您可以杀掉单个标签而不是整个应用程序。

Randolpho也告诉我,IE8具有类似的功能。

答案 3 :(得分:4)

取决于浏览器。有些让你点击“停止”按钮来停止javascript执行。其他人没有。

我建议最好的方法就是彻底杀死浏览器或标签。

答案 4 :(得分:4)

当失控javascript需要很长时间才能执行时,大多数浏览器都会出现“慢速脚本性能”警告。此警告对话框通常提供杀死有问题脚本的选项。

答案 5 :(得分:3)

如果您使用Chrome,则可以轻松杀死无响应标签。

当您看到发生无限的JavaScript循环时,请执行以下步骤:

1.如果您已经打开了另一个标签页,请转到该标签页或打开一个标签页     新的

2.按“Shift + Esc”打开Chrome的任务管理器

3.找到列表中的选项卡(应该是列表中最大的内存使用者),然后单击“结束进程”按钮。

导航到另一个标签很重要,因为JavaScript会抓住你的按键而不会因为无限循环而对此做任何事情。

答案 6 :(得分:1)

在 Firefox 中

转到开发者工具 > 调试器,然后点击暂停按钮。

enter image description here

在 Chrome 中

转到开发者工具 > 来源,然后点击暂停按钮。

enter image description here

答案 7 :(得分:0)

大多数体面的浏览器确实显示“无响应脚本”警告..​​....如果没有,我猜你最好的做法是找出警告没有弹出的原因。

答案 8 :(得分:0)

https://superuser.com/questions/92617/stop-never-ending-popup-alerts-in-firefox#comment93927_92617开始,按anonymous

  

这不是令人满意的通用解决方案,但是使用Greasmonkey(或者可能是Ubiquity或Jetpack),您可以使用调用window.confirm的函数覆盖window.alert,并可选择抛出错误,停止所有脚本执行,或切换标志以停止警报。如果您继续返回的网站会出现此行为,那么这可能很有用。

答案 9 :(得分:0)

使用Chrome时我做了什么,这就是命中shift + ctrl + esc来调出windows taskmanager。然后切换到进程选项卡并滚动chrome.exe进程(chrome为每个打开的选项卡有一个进程),直到找到一个cpu使用率明显高于其他进程的进程。它往往有30%左右,而其他所有人都喜欢0-2% 然后我将结束这个过程。 实际上,可以通过转到chrome中的工具> taskmanager或shift + esc来为其进程打开其自定义任务管理器。可能更容易使用,因为它显示了更多的选项卡信息。