在事件函数中返回会导致警报弹出

时间:2015-11-01 16:01:10

标签: javascript event-handling

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

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

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

此代码会生成警告,并提示我留在此页面保留。我在这里没有得到语法。我认为使用alert()函数进行警报。到底发生了什么?谢谢你的帮助

1 个答案:

答案 0 :(得分:3)

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

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.
});

如果您尝试下面的代码,但不会返回消息,那么您将无法获得确认提示框,但您仍然可以捕获事件并执行操作。

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;
})