遭遇onbeforeunload

遭遇onbeforeunload想用 JS 控制网页卸载确实是一件麻烦的事情 如果用了 unload 那么很显然我们无法阻止网页的 replace 或者 reload 因为 unload 是在下一个网页到达 client 的时候被触发的 因此我只能选择用 onbeforeunlo nbsp onbeforeunlo 被调用的时候 当前的页面尚未被 unload 所以我们还能够来得及做一些事情 但是我最近也遇到了一些麻烦 onbeforeu

想用JS控制网页卸载确实是一件麻烦的事情。如果用了unload,那么很显然我们无法阻止网页的replace或者reload,因为 unload是在下一个网页到达client的时候被触发的,因此我只能选择用onbeforeunload。

 

onbeforeunload 被调用的时候,当前的页面尚未被unload,所以我们还能够来得及做一些事情。但是我最近也遇到了一些麻烦:onbeforeunload有时候会莫名 其妙的被执行两次。不管是IE还是FF都会出现这种现象。这是个极为隐蔽的问题,我费了好些力气才揪出了它。

 

究其原 因,是因为如果我们只剩最后一个标签页,那么关闭该标签页的时候,整个browser也会被关闭掉。如果恰好最后一个tab上跑的一段js中有 onbeforeunload事件的调用,这个onbeforeunload就会执行两次。注意:如果是刷新,则不会存在这个问题,因为browser不 会随之关闭。所以我猜测,浏览器的关闭过程中,当最后一个tab关闭时,onbeforeunload被调用一次,随即整个browser关闭,onbeforeunload 再次被调用。

 

当然还没有很好的解决方案。目前解决的思路如下:

 

var hasExecuted=false; function onBeforeUnloadHandler(event){ if(this.hasExecuted==true){ return; } // TO-DO SOMETHING this.hasExecuted=true; }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/227179.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午9:46
下一篇 2026年3月16日 下午9:46


相关推荐

  • java环境配置——cmd命令行输入java正常显示而javac则显示不是内部或者外部命令[通俗易懂]

    java环境配置——cmd命令行输入java正常显示而javac则显示不是内部或者外部命令[通俗易懂]重装系统之后第二发,配置pycharm,意料之外的错误,启动的时候竟然要求配置jdk,瞬时蒙蔽,不记得之前有这么一出啊,上图:于是乎就去官网下载了jdk:找到适合自己的版本,我选的最后一个windows64位的,下载好之后直接安装就行,貌似这里不会有啥问题:安装完成需要在配置环境变量,这样系统才能找到我们的java命令,具体的原理大家可以搜一下,网上讲的很清楚~~环境变…

    2022年5月28日
    51
  • 2026年京东云一键部署 OpenClaw 保姆级教程(新手必看)

    2026年京东云一键部署 OpenClaw 保姆级教程(新手必看)

    2026年3月13日
    2
  • 多位点序列分型_多位点序列分型(MLST)在艾伯特埃希菌鉴定中的应用

    多位点序列分型_多位点序列分型(MLST)在艾伯特埃希菌鉴定中的应用3 讨论艾伯特埃希菌是一种新发现的肠道致病菌 起初通过常规检测方法被鉴定为致病性大肠杆菌 EPEC 或者出血性大肠杆菌 EHEC 对该菌的误诊漏诊容易造成公众健康潜在的危险 也会影响临床治疗效果 由于目前对其研究较少 仍没有标准化检测方法和商品化鉴定系统 利用分子生物学技术在基因水平上研究遗传进化关系 则成为菌种鉴定的关键 利用 MLST 对 30 株疑似艾伯特埃希菌分型过程中 存在个别菌株

    2026年3月19日
    2
  • JAVA代码实现FTP文件下载

    JAVA代码实现FTP文件下载JAVA实现FTP文件下载

    2022年5月5日
    57
  • xray安全漏洞检测(高效能)

    xray安全漏洞检测(高效能)风险告知:请勿在未授权情况下,对网站进行安全扫描,存在很大的法律风险,详细请了解网络安全法。血的案例:”白帽黑客”找漏洞被抓引争议世纪佳缘否认”钓鱼”–传媒–人民网在正式运行xray生成配置文件config.yaml后,请优先修改配置项,确认扫描范围,再重新启动xray如不预先配置,默认扫描所有站点,存在非常大的法律风险,请知悉!!!xray是一款功能强大的安全评估工具,主要特性有:检测速度快。发包速度快;漏洞检测算法高效。 支持范围广。大至OWASPTo.

    2022年5月15日
    55
  • python进销存系统代码_继续进销存系统

    python进销存系统代码_继续进销存系统事情必须一件一件做好。觉得自己太厉害会长痘。JinternalFrame的使用跟JFrame几乎一样,可以最大化、最小化、关闭窗口、加入菜单等功能;唯一不同的是JinternalFrame是lightweightcomponent,也就是说JInternalFrame不能单独出现,必须依附在最上层组件上。由于这个特色,JInternalFrame能够利用java提供的LookandFeel…

    2022年5月31日
    50

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号