二者的区别是,触发的时机不一样, DOMContentLoaded 事件先触发, load 事件后触发。可以参考 jQuery 中 ready 与 load 事件。
DOM 文档解析步骤如下:
- 从上往下解析 HTML 结构
- 加载外部脚本和样式文件
- 解析并执行脚本代码
- DOM树构建完成 –> DOMContentLoaded
- 继续加载图片等外部文件
- 页面加载完毕 –> load
由此可知,在第4步,会触发 DOMContentLoaded 事件,在第6步,会触发 load 事件。
用原生 js 可以这么写:
1 | document.addEventListener("DOMContentLoaded", function() { |
用 jQuery 这么写:
1 | // DOMContentLoaded |