DOMContentLoaded事件的误解

3

MDN上了解到,DOMContentLoaded不会等待样式表。

当初始HTML文档完全加载和解析完成时,DOMContentLoaded事件被触发,无需等待样式表、图像和子框架完成加载。

但是从varvy.com和谷歌上也可以看到:

一个常见的误解是样式对domContentLoaded没有影响,但根据W3 HTML5规范,这是不正确的。

domContentLoaded:标记DOM准备就绪且没有阻止JavaScript执行的样式表 - 这意味着我们现在(可能)可以构造渲染树。

domContentLoaded通常标记DOM和CSSOM都已经准备就绪。

那么,哪一个是正确的? 什么是阻止脚本的样式表?

1个回答

2
所有内联Javascript必须执行,因为它们可能会影响DOM。例如,document.write。如果JS访问了还未加载的CSS,换句话说是"CSS阻止JS"。因此,DOM等待JS,JS等待CSS加载完成。
引申一下:
DOM <---(阻塞)--- JS <---(阻塞)---- CSS
因此,阻塞CSS必须在domContentLoaded之前加载!之后就没有样式表阻止JavaScript执行了!现在加粗部分有意义了吗?
CSSOM已准备好时,它可以被DOM使用,因此DOM不使用的CSS可以继续加载。
现在误解是否消除了呢?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接