chrome 浏览器 onbeforeunload 事件不触发,有替代方案吗?

2019-06-19 10:43发布

在通过浏览器的 window.onbeforeunload 实现离开页面提示功能时,发现在关闭浏览器的时候,window.onbeforeunload 事件并没有被触发。我使用的是最新版的Vivaldi浏览器,通过输入vivaldi://about 可以看到所使用的浏览器内核版本。

然后使用最新版本的chrome浏览器进行测试,浏览器版本如下:

  • 发现73.0.3683.103版本也存在问题,打开页面你需要和页面有交互,才能在关闭浏览器后触发 window.onbeforeunload事件,如果直接打开直接关闭,并不能触发。
  • 73.0.3683.105版本进行.103版本的操作还是不能触发 window.onbeforeunload事件

后来在 developers-google 发现 window.onbeforeunload 事件在 Chrome 51已被移出,其他浏览器也相应版本移除了。

那么有哪些方案可能替代 window.onbeforeunload 呢?

  • chrome 73.0.3683.103版本内核测试

    第一种:直接打开直接关闭,不触发
    第二种:打开后点击一下a链接,在关闭触发

  • 测试代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script>
        window.onbeforeunload = function (e) {
            var message = 'leave?';
            e = e || window.event;
            if (e) {
                e.returnValue = message;
            }
            return message;
        };
    </script>
</head>
<body>
    <a href="#">cnblogs</a>
</body>
</html>

标签: js chrome
2条回答
Ridiculous、
2楼-- · 2019-06-19 11:05

见http://code.google.com/p/chromium/issues/detail?id=4422

查看更多
女痞
3楼-- · 2019-06-19 11:21
登录 后发表回答