Javascript 关闭浏览器前的警告未按预期工作
Javascript warning before closing browser not working as expected
我尝试了基于大量示例的解决方案,并且该事件仅在首先单击其他内容时才有效,例如。 a link 已在同一页面上第一次被右键单击。然后,如果我单击浏览器关闭按钮,它会在按预期关闭之前提示警告。
否则,如果我先转到该页面或刷新它并单击关闭按钮,它不起作用并且页面关闭。 onbeforeunload
函数中的代码每次都命中,但在最后一种情况下显然没有效果。
$("button, a").bind("click", function () {
window.onbeforeunload = null;
});
window.onbeforeunload = function (e) {
e = e || window.event;
// For IE and Firefox prior to version 4
if (e) {
e.returnValue = 'Sure?';
}
// For Safari
return 'Sure?'; // the code hits each time - normally it does have no effect but if right-clicked a link on the page first it does work?
};
这看起来是一种非常奇怪的行为。任何人都知道为什么这只在页面上首先发生另一个事件时才起作用?
在 Firefox 中试过 & Chrome。
这是一项功能。 According to MDN:
To combat unwanted pop-ups, some browsers don't display prompts created in beforeunload event handlers unless the page has been interacted with; some don't display them at all.
即使没有用户交互,您也需要显示 onbeforeunload 弹出窗口的用例是什么?例如,通常这些是为了防止未提交表单上的数据丢失。如果用户想要离开页面并且没有任何理由显示弹出窗口,则不应尝试这样做。
我尝试了基于大量示例的解决方案,并且该事件仅在首先单击其他内容时才有效,例如。 a link 已在同一页面上第一次被右键单击。然后,如果我单击浏览器关闭按钮,它会在按预期关闭之前提示警告。
否则,如果我先转到该页面或刷新它并单击关闭按钮,它不起作用并且页面关闭。 onbeforeunload
函数中的代码每次都命中,但在最后一种情况下显然没有效果。
$("button, a").bind("click", function () {
window.onbeforeunload = null;
});
window.onbeforeunload = function (e) {
e = e || window.event;
// For IE and Firefox prior to version 4
if (e) {
e.returnValue = 'Sure?';
}
// For Safari
return 'Sure?'; // the code hits each time - normally it does have no effect but if right-clicked a link on the page first it does work?
};
这看起来是一种非常奇怪的行为。任何人都知道为什么这只在页面上首先发生另一个事件时才起作用?
在 Firefox 中试过 & Chrome。
这是一项功能。 According to MDN:
To combat unwanted pop-ups, some browsers don't display prompts created in beforeunload event handlers unless the page has been interacted with; some don't display them at all.
即使没有用户交互,您也需要显示 onbeforeunload 弹出窗口的用例是什么?例如,通常这些是为了防止未提交表单上的数据丢失。如果用户想要离开页面并且没有任何理由显示弹出窗口,则不应尝试这样做。