Javascript onBeforeUnload处理程序在IE中表示null

Javascript onBeforeUnload处理程序在IE中表示null,javascript,jquery,Javascript,Jquery,我的web应用程序具有以下功能: $(window).bind('beforeunload', function() { if(unSavedChanges == true) { return 'You have unsaved changes'; } return null; }); 这在Safari和Firefox中运行良好(Firefox的onBeforeUnload对话框中不显示我的自定义消息除外)。然而,在Windows7上的IE8上,

我的web应用程序具有以下功能:

$(window).bind('beforeunload', function() {
    if(unSavedChanges == true)
    {
        return 'You have unsaved changes';
    }
    return null;
});
这在Safari和Firefox中运行良好(Firefox的onBeforeUnload对话框中不显示我的自定义消息除外)。然而,在Windows7上的IE8上,它总是显示onBeforeUnload通知,特别是如果没有未保存的更改,它只会说“null”。当用户保存了所有内容并希望导航离开时,如何防止IE显示onBeforeUnload通知

根据Jon的建议,我已经删除了
returnnull
行,代码现在是

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

删除
returnnull
行,它应该可以正常工作(在Javascript中
null
undefined
是不同的事情)


顺便说一下,为了实现最大的兼容性,您应该接受一个
事件
参数并设置
事件.returnValue

我使用普通的javascript来实现这一点,而且效果很好

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

function unloadMessage() {
     return 'Please stay on the page';
}

这将不起作用,它将根据上的
值在卸载前设置为on,一旦设置,它将始终启动。要求是在onbeforeunload内部检查是否有未保存的更改。如果他将
setConfirmUnload
函数绑定到文本字段的onchange事件,则该功能应该可以工作。这样,当文本字段被清除时,onbeforeunload函数就被删除了IE9@ishaq:适用于IE9(使用开发人员工具配置为“浏览器模式:IE 8”)。你能发布不起作用的确切代码吗?奇怪,在IE9上对我也不起作用。我已经更新了我的问题以包含更新的代码(基本上我只是按照你的建议删除了
return null
)@ishaq:仍然使用IE9,无论是IE8还是IE9模式。你是对的,我的坏朋友!这个javascript是rails应用程序的一部分,在经过资产管道之后,代码最终看起来是这样的:
returnunsavedchanges?“您有未保存的更改”:null第二个块可以正常工作,对吗?对我来说,如果我们编辑这个问题,这样我们就不能一目了然地分辨出哪些代码有问题,哪些代码没有问题,这真的有点让人困惑。