概述

当初始的 HTML 文档被完全加载和解析完成之后,DOMContentLoaded 事件就会被触发,与 load 事件不同,该事件无需等待样式表、图像、flash和子框架的完成加载;需要注意的是该事件 IE9 以上才支持。

DOMContentLoaded 触发时机

没有 CSS 和 JS

HTML文档解析的过程:
WebAPI-DOMContentLoaded事件
HTML代码完全加载完毕生成DOM树后,此时会触发DOMContentLoaded 事件;所以该事件是在用户看到页面内容之前触发。

有 CSS 无 JS

HTML文档解析的过程:
WebAPI-DOMContentLoaded事件
无论是内部的CSS代码还是引入的 CSS 代码,都不会影响 DOMContentLoaded 事件;遇到 CSS 代码之后,会生成 CSSDOM,并不影响DOM的生成;所以不会影响 DOMContentLoaded 事件的触发。

有 CSS 和 JS

HTML文档解析的过程:
WebAPI-DOMContentLoaded事件

JavaScript 的加载和执行会迟滞 DOMContentLoaded 事件的触发;JavaScript 需要等待 CSS 渲染完成后再去加载和执行。

通过 script 标签新增的 sync 和 defe r属性可以解决 JavaScript 阻塞问题。

相关文章: