return 在事件函数中导致弹出警报

return in an event function results in alert pop-up

我正在关注 JavaScript 上的一本书。令我困惑的页面如下:http://javascriptbook.com/code/c06/html5-events.html.

当用户按下 "Next" 按钮时,会触发一个事件。这是指定事件侦听器的代码:

window.addEventListener('beforeunload', function(event) {
  var message = 'You have changes that have not been saved';
  (event || window.event).returnValue = message;
  return message;
})

此代码会生成警报,并让我留在此页面离开。我不明白这里的语法。我认为警报是用 alert() 函数发出的。发生了什么事或在这里?感谢您的帮助

此代码 returns 一条消息,因此浏览器负责确认用户的导航(或关闭)事件,这也是您收到浏览器特定警报的原因。

window.addEventListener('beforeunload', function(event) {
  var message = 'You have changes that have not been saved';
  (event || window.event).returnValue = message;
  return message; // alerts with this message.
});

如果您尝试以下没有 returns 消息的代码,您将不会收到确认提示框,但您仍然可以捕获事件并执行操作。

window.addEventListener('beforeunload', function(event) {
  //var message = 'You have changes that have not been saved';
  //(event || window.event).returnValue = message;
  localStorage.eventCaptured = 'eventCaptured without alert'; // gets saved to localStorage
  //return message;
})