DOMContentLoaded | HTML 文档完全解析(DOM 树构建完成)时触发,无需等待 CSS/图片等资源。 | 操作 DOM 元素、绑定事件监听器等需要 DOM 就绪的操作。 | 比 load 更早触发,适合快速初始化页面交互逻辑。 |
load | 页面所有资源(图片、CSS、JS 等)加载完成后触发。 | 需要资源完全就绪的操作(如图像尺寸计算、依赖资源的初始化)。 | 如果页面资源较多(如大图),可能延迟较久。 |
beforeunload | 页面即将关闭或刷新前触发。 | 提示用户保存未提交的数据(如表单),或清理临时数据。 | 必须通过 event.preventDefault() 并设置 event.returnValue 才会生效。 |
unload | 页面正在卸载(关闭或跳转)时触发。 | 发送统计日志、释放内存等清理操作。 | 无法取消页面关闭,且部分浏览器可能限制异步操作。 |
readystatechange | 文档加载状态变化时触发(通过 document.readyState 判断阶段)。 | 监听更细粒度的加载阶段(如 interactive 或 complete )。 | 状态值包括:loading 、interactive (DOM 就绪)、complete (全完成)。 |
pageshow | 页面显示时触发(包括首次加载或从缓存恢复,如浏览器后退)。 | 处理浏览器缓存恢复后的状态同步(如表单数据回填)。 | 可通过 event.persisted 判断是否来自缓存。 |
pagehide | 页面隐藏时触发(如跳转其他页面或关闭)。 | 保存页面状态到 sessionStorage ,以便恢复。 | 无法完全替代 beforeunload ,但更可靠。 |