当用户尝试离开页面时,我使用了 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/