Skip to main content

DOM生命周期

声明周期

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