javascript - 返回事件函数导致弹出警报

标签 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() 函数发出的。发生了什么事或在这里?感谢您的帮助

最佳答案

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

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

关于javascript - 返回事件函数导致弹出警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33464160/

相关文章:

javascript - 为什么 "null"会增加数组的长度,即使它代表空值?

javascript - 为 gulp HTML linter 设置选项/规则

jQuery UI 模式对话框 : Prevent keypressed when dialog is open

java - 滚动条事件处理,如何保持抓取的数字静态

Flutter web 上传文件取消事件

javascript - 如何用 false 停止脚本?

javascript - 我应该在哪个 HTML 元素上放置 page-global data-* 属性?

javascript - fancyBox3 - 如何在单击打开的图像时禁用缩放

qt - 如何在 Qt Creator 中为按钮定义 OnClick 事件处理程序?

javascript - 增量内 Angular 表达式