【发布时间】:2016-02-14 22:28:23
【问题描述】:
在 firefox 38 中,我注意到如果我激活浏览器的反弹出功能,它会停止执行在调用 window.alert() 或 window.confirm() 之后的行上的代码
例如,给定代码:
var cb = document.querySelector("input");
cb.onclick = function(){
console.log("before alert");
window.alert("foo");
console.log("after alert");
};
<center><input type=checkbox></center>
如果您多次点击复选框,每次点击之间的间隔不到 3 秒,那么在弹出窗口中您将可以选择“阻止此页面创建其他对话框”。激活它。完成后,您会看到警报停止执行后的console.log。
这是一种预期的 Firefox 行为吗?它记录在哪里?
Chrome 不会以这种方式运行 - 它仍会执行 window.alert() 行之后的代码。
编辑 - 我发现了一个错误报告:https://bugzilla.mozilla.org/show_bug.cgi?id=633154。似乎在某些版本中,如果警报被抑制,它们会抛出 NS_ERROR_NOT_AVAILABLE 异常,但在某些版本中它们不会并且它是静默的。
【问题讨论】:
-
我的 Firefox 是 44 岁,并且在检查弹出警报中的阻止警报复选框后,我也可以正常获取两个控制台日志,尝试将您的 Firefox 更新到最新版本
-
@Armen 你是对的,v44 表现正常。 v38、40,我认为 42 也以这种奇怪的方式表现。
-
如果它是一些重要的警报/确认消息,您可以改为默认使用一些现成的弹出窗口,其中有很多:defunkt.io/facebox 或 fancybox.net 或选择其中一个 codegeekz.com/jquery-modal-plugins 等。并实现
okcancel按钮,里面有callbacks,所以它会在不同的浏览器下以相同的方式表现
标签: javascript firefox popup