DOMContentLoaded

浏览器已完全加载 HTML,并构建了 DOM 树。但像 <img> 和 样式表 之类的外部资源可能尚未加载完成

load

不仅加载完成了 HTML,还加载完成了所有外部资源

beforeunload

用户正准备离开页面,由于不一定会触发,所以该事件不可靠

unload

页面正在被卸载时触发

由于 BFCache 的工作原理,当页面被缓存时,unload 事件可能不会被触发,所以该事件不可靠(几乎不使用)

表示用户会话结束的事件:

  1. 最佳事件是 visibilitychange 事件
  2. 不支持 visibilitychange 的浏览器中,pagehide 事件是次佳的替代方案(有可能不生效)
  3. 如果只是想要检测页面卸载事件,pagehide 事件是最佳选项

发送分析数据

在页面关闭时发送数据,在 visibilitychange 中使用 navigator.sendBeacon(url, data)