4

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

例如,这样做:

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 中表现不同?

4

2 回答 2

2

在 Chrome 中,返回null等同于不返回任何内容或undefined.
当什么都不返回时,不会弹出对话框。

注意:在您的第一个示例中,永远不会到达事件侦听器的最后一行,因为iforelse块返回。

而不是返回nullundefined,只是否定条件:http: //jsfiddle.net/f6uTw/

window.onbeforeunload = function() { 
    if (!shouldNotWarnBeforeUnload) {
        return 'Are you sure you want to leave the page?';
    }
};
于 2012-04-05T15:56:34.420 回答
1

在 Internet Explorer 11 上,null仍会创建beforeunload弹出窗口。那些以不同方式工作的罕见实例undefined之一null

ie11 显示值为 null 的 onbeforeunload 弹出窗口

于 2017-03-20T14:53:50.157 回答