繁体   English   中英

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

[英]if i make a mistake in code and cause an infinite loop in javascript and it keeps on calling alert(), is there a way out to stop the loop?

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

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

最简洁的答案是不。

这是使用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;           
     }
  }
}

看起来你可以在Firefox中:

  1. 按住Ctrl键
  2. 按Enter键
  3. 按F4一次

根据博客文章,它并不适用于所有情况,更多信息请访问: puremango.co.uk

谷歌浏览器允许您阻止显示其他警报。

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

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

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

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

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

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

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

注意:如果您打开了多个选项卡,则需要先从屏幕底部控制栏上的图标将其关闭,因为“关闭所有选项卡消息”会产生干扰。

没门。 好的是,虽然大多数浏览器都有无限的递归保护,但这是offtopic。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM