如果我在代码中犯了一个错误并导致javascript中的无限循环并且它继续调用alert(),是否有办法停止循环?

时间:2009-05-21 19:01:58

标签: javascript firefox alert

有时我使用调试代码来警告javascript中的某些内容(例如,匹配正则表达式中的内容),但忘记修饰符并且警报处于无限循环中(或者如果循环匹配模式300次)。如果使用Firefox,则警报会一直显示,甚至无法关闭选项卡,窗口或应用程序。

如果我强行退出,它会关闭所有标签甚至是Firefox的其他窗口...实际上有一种方法可以更优雅地停止循环吗?

7 个答案:

答案 0 :(得分:17)

简短的回答是:否。

这是使用Firebug和console.log函数的一个很好的理由。具有讽刺意味的是,这将导致“停止脚本,因为它正在逃避对话”,在某些情况下不显示,这意味着你现在回到现在的位置。

Chrome和Opera具有此功能。 IE没有,Apple Safari也没有。

不是本机解决方案,但你可以试试这个油脂猴子脚本:http://www.tumuski.com/2008/05/javascript-alert-cancel-button/

此外,您可以简单地覆盖警报功能以使用确认对话框,并在取消确认时停止显示警报:

var displayAlerts = true;

然后:

function alert(msg) {
  if (displayAlerts) {
     if (!confirm(msg)) {
       displayAlerts = false;           
     }
  }
}

答案 1 :(得分:5)

看起来你可以在firefox:

  1. 按住Ctrl
  2. 按Enter键
  3. 按F4一次
  4. 根据博客文章,它并不适用于所有情况,更多信息请点击此处:puremango.co.uk

答案 2 :(得分:2)

Google Chrome可让您阻止其他警告显示。

答案 3 :(得分:1)

我已经编写了一个Firefox扩展来解决这个问题。

https://addons.mozilla.org/en-US/firefox/addon/13176

答案 4 :(得分:0)

[在IE 11上测试]如果您需要关闭网络浏览器而不想出于任何原因ctrl-alt-del(在我的情况下,我的错误javascript无限警报循环在Citrix上运行会自动运行从缓存内存ctrl-alt-del之后重新加载我的上一个会话,我无法清除)

你可以通过按住alt-F4并发送垃圾邮件(关闭浏览器窗口)来解决问题。

这非常快...... alt-F4非常快地关闭警报框,您会注意到浏览器顶部的X按钮闪烁。这为您提供了非常小的时间窗口,您可以在警报之间关闭它。

注意:如果您打开了多个标签页,则需要先从屏幕底部控制栏上的图标中将其关闭,因为"关闭所有标签消息"会干涉。

答案 5 :(得分:0)

没办法。好的是,虽然大多数浏览器都有无限的递归保护,但这是非正式的。

答案 6 :(得分:0)

安装Greasemonkey并转到此页面: http://www.tumuski.com/2008/05/javascript-alert-cancel-button/

为greasemonkey安装此脚本后,任何警告对话框窗口都会有一个取消按钮,它将停止javascript。