Javascript onBeforeUnload处理程序在IE中表示null
我的web应用程序具有以下功能: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上,
$(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如果代码已经是解决方案,那么代码>第二个块可以正常工作,对吗?对我来说,如果我们编辑这个问题,这样我们就不能一目了然地分辨出哪些代码有问题,哪些代码没有问题,这真的有点让人困惑。