Javascript window.onbeforeunload是否有任何不良副作用,是否返回无值?

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

我知道在Chrome和FF中,如果window.onbeforeunload返回null,那么对话框将不会弹出。但在IE中,它会弹出消息“null”。为了使IE不创建弹出窗口,window.onbeforeunload应不返回任何内容。但在Chrome和FF中,不返回任何内容是否有任何其他副作用?如果不是,为什么会有人写“returnnull;”首先

例如,请执行以下操作:

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?';
    }
};