概述
当初始的 HTML 文档被完全加载和解析完成之后,DOMContentLoaded 事件就会被触发,与 load 事件不同,该事件无需等待样式表、图像、flash和子框架的完成加载;需要注意的是该事件 IE9 以上才支持。
DOMContentLoaded 触发时机
没有 CSS 和 JS
HTML文档解析的过程:
HTML代码完全加载完毕生成DOM树后,此时会触发DOMContentLoaded 事件;所以该事件是在用户看到页面内容之前触发。
有 CSS 无 JS
HTML文档解析的过程:
无论是内部的CSS代码还是引入的 CSS 代码,都不会影响 DOMContentLoaded 事件;遇到 CSS 代码之后,会生成 CSSDOM,并不影响DOM的生成;所以不会影响 DOMContentLoaded 事件的触发。
有 CSS 和 JS
HTML文档解析的过程:
JavaScript 的加载和执行会迟滞 DOMContentLoaded 事件的触发;JavaScript 需要等待 CSS 渲染完成后再去加载和执行。
通过 script 标签新增的 sync 和 defe r属性可以解决 JavaScript 阻塞问题。