关闭浏览器onunload和onbeforeunload不起作用

有时候防止用户在使用过程中误操作关闭浏览器导致数据丢失,需要在关闭浏览器时弹窗提醒。因此浏览器提供了 onbeforeunload 事件(参考MDN BeforeUnloadEvent

//MDN一个基本跨浏览器运行的例子
window.addEventListener("beforeunload", function (e) {
  var confirmationMessage = "您还有未保存的数据,确定要离开吗?"; //虽然可能没啥用
  (e || window.event).returnValue = confirmationMessage;     //Gecko + IE
  return confirmationMessage;                                //Webkit, Safari, Chrome etc.
});

Chrome及Firefox无法修改提示文字,大概是防止开发者滥用吧……
然而有时候我们会发现,在Chrome或Firefox中连续刷新不起作用,或者点击关闭按钮没有弹窗提醒,感觉总是时灵时不灵。但是如果在事件方法体内执行console控制台又有输出。
其实是因为要触发浏览器自带的关闭弹窗,用户必须跟网页有过交互。简单的来说就是点击过网页。
连续刷新时,因为你没有点击过网页内部,所以无法触发。
刚一打开页面就点击关闭时,同理也无法触发。
但是因为我比较懒,只测试了Chrome及Firefox,其他浏览器的表现无法提供确切数据,敬请见谅。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. 介绍 浏览器可能是最广泛使用的软件。本书将介绍浏览器的工作原理。我们将看到,当你在地址栏中输入google....
    康斌阅读 6,306评论 7 18
  •   JavaScript 与 HTML 之间的交互是通过事件实现的。   事件,就是文档或浏览器窗口中发生的一些特...
    霜天晓阅读 8,924评论 1 11
  • Android中,控件的Enable和Clickable属性有何区别? 首先要搞清楚的是,当一个控件的clicka...
    Ling912阅读 13,221评论 7 6
  • 多态 定义:事物存在的多种体现形态。 多态的体现:父类的引用指向自己的子类对象。父类的引用也可以接收自己的子类对象...
    pure_joy阅读 1,288评论 0 0
  • 1、我和暑假分手了,都是因为开学那贱人! 2、睡前看书,越看越瞌睡;睡前看手机,越看越清醒;睡前什么都不看,则思绪...
    Henry之专属公主阅读 1,657评论 0 2

友情链接更多精彩内容