Skip to main content
 首页 » 编程设计

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

2026年07月28日6Renyi-Fan

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