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