beforeunload 事件是浏览器提供的一个页面生命周期事件,它的触发时机和作用如下:
触发时机
beforeunload 事件主要在以下几种情况下触发:
-
用户关闭浏览器标签页 - 当用户点击标签页的关闭按钮时
-
用户刷新页面 - 当用户点击刷新按钮或使用 F5/Ctrl+R 等快捷键刷新页面时
-
用户导航离开页面 - 当用户通过点击链接、在地址栏输入新地址或使用浏览器的前进/后退按钮导航到其他页面时
-
调用 window.location 改变页面地址 - 当通过 JavaScript 代码修改 window.location.href 等方式导航时
与工程关闭的关系
beforeunload 事件不是在整个工程关闭时触发,而是在当前页面即将被卸载前触发。这里的"卸载"指的是浏览器停止渲染当前页面并准备加载新页面或关闭当前标签页的过程。
在 Web 应用中,每个页面标签都是独立的执行环境,beforeunload 只影响当前标签页的生命周期,不会影响其他标签页或整个浏览器进程。
实际应用
在代码中,beforeunload 事件常被用于:
- 提醒用户保存未提交的表单数据
- 清理页面资源(如 WebSocket 连接、定时器等)
• • 记录用户离开页面的行为数据