15

我的网络应用程序有这个:

$(window).bind('beforeunload', function() {
    if(unSavedChanges == true)
    {
        return 'You have unsaved changes';
    }
    return null;
});

这在 Safari 和 Firefox 中运行良好(除了 Firefox 没有在它的 onBeforeUnload 对话框中显示我的自定义消息)。但是在 Windows 7 上的 IE 8 上,它总是显示 onBeforeUnload 通知,特别是如果没有未保存的更改,它只会显示“null”。当用户保存所有内容并想要离开时,如何防止 IE 显示 onBeforeUnload 通知?

根据乔恩的建议,我删除了该return null行,代码现在为

$(window).bind('beforeunload', function() {
   if(unSavedChanges == true)
   {
       return 'You have unsaved changes';
   }
});
4

2 回答 2

21

删除该return null行,它应该没问题(在 Javascriptnullundefined是不同的东西)。

顺便说一句,MDN说,为了获得最大的兼容性,您也应该接受event参数和设置event.returnValue

于 2012-08-03T10:38:52.283 回答
0

我为此使用普通的javascript并且工作正常

function setConfirmUnload(on) {
     window.onbeforeunload = (on) ? unloadMessage : null;
}

function unloadMessage() {
     return 'Please stay on the page';
}
于 2012-08-03T10:39:35.170 回答