Javascript window.onbeforeunload是否有任何不良副作用,是否返回无值?
我知道在Chrome和FF中,如果window.onbeforeunload返回null,那么对话框将不会弹出。但在IE中,它会弹出消息“null”。为了使IE不创建弹出窗口,window.onbeforeunload应不返回任何内容。但在Chrome和FF中,不返回任何内容是否有任何其他副作用?如果不是,为什么会有人写“returnnull;”首先 例如,请执行以下操作:Javascript window.onbeforeunload是否有任何不良副作用,是否返回无值?,javascript,internet-explorer,firefox,google-chrome,browser,Javascript,Internet Explorer,Firefox,Google Chrome,Browser,我知道在Chrome和FF中,如果window.onbeforeunload返回null,那么对话框将不会弹出。但在IE中,它会弹出消息“null”。为了使IE不创建弹出窗口,window.onbeforeunload应不返回任何内容。但在Chrome和FF中,不返回任何内容是否有任何其他副作用?如果不是,为什么会有人写“returnnull;”首先 例如,请执行以下操作: window.onbeforeunload = function() { if (shouldNotWarnBefo
window.onbeforeunload = function() {
if (shouldNotWarnBeforeUnload)
{ return null; }
else
{ return ('Are you sure you want to leave the page?'); }
return null;
};
还有这个
window.onbeforeunload = function() {
if (shouldNotWarnBeforeUnload)
{ }
else
{ return ('Are you sure you want to leave the page?'); }
};
在Chrome中表现不同?在Chrome中,返回
null
相当于不返回任何内容或未定义
如果未返回任何内容,则不会弹出对话框
注意:在第一个示例中,永远不会到达事件侦听器的最后一行,因为返回了if
或else
块
与其返回null
,undefined
等,只需否定条件:
在Internet Explorer 11上,null
仍将在卸载前创建弹出窗口。undefined
和null
工作方式不同的罕见实例之一
不要在卸载前使用onbeforeunload
,它很难看…@c69它肯定很有用:当你不小心离开你的邮件客户端时,你想失去草稿吗?@RobW如果你是开发人员-你最好实现自动保存,而不是恼人的onbeforeunload警告,如果你是用户-你可以使用更好的浏览器,哪一个自动保存表单输入。@c69即使启用了自动保存,在应用程序完全初始化之前等待几秒钟也不好。如果您真的讨厌此对话框,请使用Opera,它不支持onbeforeunload
事件。不过它是。@RobW我从2004年起就把Opera作为我的主浏览器;)
window.onbeforeunload = function() {
if (!shouldNotWarnBeforeUnload) {
return 'Are you sure you want to leave the page?';
}
};