领先的免费Web技术教程,涵盖HTML到ASP.NET

网站首页 > 知识剖析 正文

JavaScript监听浏览器关闭及刷新事件beforeunload

nixiaole 2024-12-01 02:02:46 知识剖析 11 ℃

JavaScript 代码添加了一个 beforeunload 事件监听器,提示用户在关闭标签页或浏览器窗口时确认离开,尝试关闭这个标签或浏览器窗口,你会看到提示消息。

写在前面,谷歌浏览器下可能会浏览器安全策略当做恶意弹窗拒绝执行,可以留意下浏览器动态。另外自定义的文案可能不能展示,浏览器会使用默认的弹窗文案。

代码示例如下:很简单的demo,请拿走吧。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Before Unload Example</title>
    <script>
        window.addEventListener('beforeunload', function (e) {
            var confirmationMessage = '你确定要离开这个页面吗?';
            // 标准的处理方式
            e.preventDefault();
            // 设置兼容旧版本的浏览器
            e.returnValue = confirmationMessage;
            return confirmationMessage;
        });
    </script>
</head>
<body>
    <h1>Before Unload Example</h1>
    <p>尝试关闭这个标签或浏览器窗口,你会看到提示消息。</p>
</body>
</html>

关键代码示意:

  1. window.addEventListener('beforeunload', function (e) { ... });:为 beforeunload 事件添加一个监听器,触发时会执行其中的函数。
  2. e.preventDefault();:调用 preventDefault 方法,这是现代浏览器处理 beforeunload 事件的标准方法。
  3. e.returnValue = confirmationMessage;:设置 returnValue 属性,这在某些浏览器中是必须的。
  4. return confirmationMessage;:返回消息,这对于一些浏览器也是必需的,以确保提示消息能够显示。

这段代码做了一些兼容,适配多数浏览器,可以确保大多数情况下都能正确提示用户。

调试效果:

  • 谷歌浏览器-挽留弹窗
  • 火狐浏览器-挽留弹窗

Tags:

最近发表
标签列表