有时我使用调试代码来警告 javascript 中的某些内容(例如,匹配正则表达式中的某些内容),但忘记了修饰符并且警报处于无限循环中(或者如果循环匹配模式 300 次)。如果使用 Firefox,警报会不断出现,甚至无法关闭选项卡、窗口或应用程序。
如果我强制退出,它将关闭所有选项卡甚至 Firefox 的其他窗口......实际上有没有办法更优雅地停止循环?
有时我使用调试代码来警告 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;
}
}
}
Google Chrome 允许您阻止显示其他警报。
我编写了一个 Firefox 扩展来解决这个问题。
没门。好消息是虽然大多数浏览器都有无限递归保护,但这是题外话。
安装 Greasemonkey 并转到此页面: http ://www.tumuski.com/2008/05/javascript-alert-cancel-button/
为greasemonkey 安装此脚本后,任何警报对话框窗口都会有一个取消按钮,它将停止javascript。
[在 IE 11 上测试] 如果您需要关闭 Web 浏览器并且出于任何原因不想使用 ctrl-alt-del(在我的情况下,我的错误 javascript 无限警报循环正在 citrix 上运行,它会自动重新加载我的最后一个会话我无法清除的缓存中的 ctrl-alt-del)
您可以通过按住 alt-F4 并发送垃圾邮件 X(关闭浏览器窗口)来解决问题。
这工作得非常快... alt-F4 非常快地关闭警报框,您会注意到浏览器顶部的 X 按钮闪烁。这为您提供了非常小的时间窗口,您可以在警报之间关闭它。
注意:如果您打开了多个选项卡,您需要先从屏幕底部控制栏上的图标关闭它们,因为“关闭所有选项卡消息”会干扰。