我的印象是第一次绘画是在DOMContentLoaded事件被触发之后发生的。特别是,因为我认为要使第一个绘制发生,需要渲染树,它依赖于DOM的构造。另外,我知道在DOM构建完成时会触发DOMContentLoaded事件。直到现在,我还以为命令是:


dom互动
延迟脚本执行
DOMContentLoaded
第一次油漆
加载事件


但是后来我遇到了这个线程:"Why First Paint is happening before DOMContentLoaded",人们会经历不同的秩序。不幸的是,我不明白我错过了什么。

我正在尝试通过测试重现DCL事件之前发生的第一道油漆,尽管我认为这种行为违背了理论。如果有人可以通过一个可行的例子帮助我,那将是完美的!

先感谢您!

最佳答案

我认为您的问题是,您正在尝试将它们视为一系列整洁的事件。

但这实际上并不是它的工作方式。每个正在进行的过程基本上都是异步的,只要准备就绪就触发。没有严格和有序的顺序。

绘画是与HTML分离的,这是有充分理由的。

考虑一个非常大的HTML文档。如果您曾经在较慢的网络上加载过一个文件,那么您会知道它会在元素准备就绪时开始显示它们,而不必等待完整的HTML文件加载。

下载并解析了完整的HTML后,即显示DOMContentLoaded。速度缓慢的服务器实际上可能已经花了很长时间才能获取该文档,而且它不会永远停留在白屏上。

对于许多文档,尤其是小型文档或加载速度非常快的文档,可能是DOMContentLoaded首先触发。大一点的话,以前可能会涂一些油漆。

10-07 14:53