gpt4 book ai didi

jquery - 在 Firefox 和 IE 中使用 jquery 防止 onbeforeunload 警报

转载 作者:行者123 更新时间:2023-11-30 23:44:03 25 4
gpt4 key购买 nike

当用户尝试离开页面时,我使用了 onbeforeunload 事件来显示默认警报框。

此对话框显示在我的“表单发布”操作中。

我使用了 event.preventDefault() (适用于除 Safari 之外的浏览器)和 return null 用于 Safari,以防止在表单发布操作中显示此对话框。但这在 Firefox 和 IE 中不起作用。

下面是jquery代码示例

if (!isSafari) {
window.addEventListener("beforeunload", function (event) {
if (!hideDefaultAlert) {
event.returnValue = "Your unsaved changes will be lost";
} else {
event.preventDefault();
hideDefaultAlert = false;
}
});
} else if (isSafari) {
$(window).on("beforeunload", function () {
if (!hideDefaultAlert) {
return "Your unsaved changes will be lost";
} else {
hideDefaultAlert = false;
return null;
}
});
}

请为此提供解决方案,以防止 Firefox 和 Safari 中出现此警报。

提前致谢。

最佳答案

如果浏览器不是Safari并且表单没有改变,则不需要显示对话框。因此,请尝试按如下方式修改您的代码(删除 event.preventDefault()):

        var isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf("Constructor") > 0;
var hideDefaultAlert = true;
if (!isSafari) {
alert("not safari");
window.addEventListener("beforeunload", function (event) {
if (!hideDefaultAlert) {
event.returnValue = "Your unsaved changes will be lost";
} else {
//event.preventDefault(); //remove this line
hideDefaultAlert = false;
}
});
}

关于jquery - 在 Firefox 和 IE 中使用 jquery 防止 onbeforeunload 警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56393331/

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