gpt4 book ai didi

关闭浏览器之前的 JavaScript 警告未按预期工作

转载 作者:行者123 更新时间:2023-12-03 02:29:08 25 4
gpt4 key购买 nike

我尝试了基于大量示例的解决方案,并且仅当首先单击其他内容时该事件才起作用,例如。首先在同一页面上右键单击了一个链接。然后,如果我单击浏览器关闭按钮,它会在按预期关闭之前提示警告。

否则,如果我首先转到该页面或刷新它并单击关闭按钮,它将不起作用并且页面会关闭。 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 弹出窗口?例如,通常这些是为了防止未提交的表单上的数据丢失。如果用户想要离开页面并且没有任何理由显示弹出窗口,则您不应尝试这样做。

关于关闭浏览器之前的 JavaScript 警告未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48809994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com