window.onunload方法会被浏览器的弹窗给冲掉

我写了一个 js的onunload方法,但是在刷新页面的时候。会有个弹窗,然后我的方法就失效了

img

img

而且要对应谷歌,火狐,safari多种浏览器,有没有知道怎么解决

回答如下,有帮助的话记得采纳哦!
window.onunload 方法在页面卸载之前触发,当用户离开页面时会触发这个事件。在页面刷新或关闭时,浏览器会发出确认消息,询问用户是否离开页面。如果用户点击“离开”按钮,浏览器就会触发 onunload 事件。
但是,由于浏览器发出的确认消息会中断脚本的执行,因此在确认消息出现之前就会执行 window.onunload 方法.
有一种方式可以解决此问题,就是使用 JavaScript 的 beforeunload 事件来代替 onunload 事件。这个事件在用户即将离开页面时触发,但是不会被浏览器的确认消息打断。

window.addEventListener("beforeunload", function (e) {
  // your code here
});

不过需要注意的是,使用 beforeunload 事件也不能禁止用户离开页面,还是会有浏览器自带的弹窗,但是脚本会在弹窗出现前完成。

试试这个,chrome和safari好用

<!DOCTYPE html>
<html lang="en-US">
<head>
    <meta charset="UTF-8"/>
    <title>Child Frame</title>
    <script>
        window.addEventListener("beforeunload", (event) => {
            if (window.history) {
                console.log("I am the 2nd one.");
            }
        });
        window.addEventListener("unload", (event) => {
            if (window.history) {
                console.log("I am the 4th and last one…");
            }
        });
    </script>
</head>
<body></body>
</html>

使用navigator获取浏览器信息,然后做判断调用适合对应浏览器的方法。
懒得敲代码,啊哈哈哈,提供个思路仅供参考

onunload 方法是在用户离开页面(如点击链接、在地址栏中输入新网址或刷新页面)时执行的 JavaScript 函数。当刷新页面时,浏览器会先提示用户是否确定刷新,如果用户确认刷新,则会执行 onunload 方法。如果在弹窗中用户点击了取消按钮,那么onunload事件不会被触发
你可以考虑使用 beforeunload 事件 来取代 onunload.

提供参考实例方法【window.open打开新窗口被浏览器拦截的处理方法】,链接:http://t.zoukankan.com/htzan-p-6202826.html

1.背景上写一个全局宽高100%的按钮,然后透明度百分百隐藏。初始化时候触发这个按钮点击事件(任一事件都行),
这样你想关闭网页前的事件生命周期会生效,所有浏览器通用

试试看这个文章里面的
https://blog.csdn.net/weixin_41420919/article/details/124949369