18
window.addEventListener("onbeforeunload",function() {return "are you sure?"});

^ 这似乎不起作用......根本......页面将简单地关闭而不显示确认框......

我意识到...

window.onbeforeunload = function() {return "are you sure?"}

会工作,但我想添加到功能(例如添加许多事件侦听器到“onbeforeunload”函数)而不是完全重写函数!

4

3 回答 3

28

on从中删除onbeforeunload

另外,请注意,这addEventListener在较旧的 IE 和可能的其他浏览器中不起作用。如果您想要一致的事件绑定,请使用库。

于 2012-06-06T18:17:16.347 回答
23

Mozilla开发者网络 API 参考中有一个“几乎跨浏览器的工作示例”,用于 beforeunload 事件。使用他们的代码。

2014 年,那是

window.addEventListener("beforeunload", function (e) {
  var confirmationMessage = "\o/";

  (e || window.event).returnValue = confirmationMessage;     //Gecko + IE
  return confirmationMessage;                                //Webkit, Safari, Chrome etc.
});

2020年,现在是

window.addEventListener('beforeunload', (event) => {
  // Cancel the event as stated by the standard.
  event.preventDefault();
  // Chrome requires returnValue to be set.
  event.returnValue = '';
});

上述所有的?

如果我需要这个,我想把这项工作委托给图书馆。如果我必须自己做,我想一个人可以做到以上所有,只是为了更加确定

  • 不要尝试设置有意义的消息文本,它只会给出不一致的用户体验
  • event = event || window.event
  • event.preventDefault(),也许在检查 preventDefault 是否已定义之后?
  • event.returnValue = ''
  • return ''
于 2014-09-10T10:41:31.333 回答
2

EventListeners没有前缀on,但它适用,或者我可以说EventHandlers有必要

所以,请记住

EventHandlers =前缀

EventListeners =前缀关闭

于 2017-08-06T14:26:51.533 回答