我的印象是在触发DOMContentLoaded事件后发生了第一次绘制。特别是,因为我认为为了第一次绘制,需要渲染树,它依赖于DOM构造。此外,我知道DOM构造完成时会触发DOMContentLoaded事件。到现在为止,我认为订单是:
但后来我遇到了这个帖子:"Why First Paint is happening before DOMContentLoaded"人们会遇到不同的顺序。不幸的是,我无法理解我错过了什么。
我正在尝试使用测试来重现在DCL事件之前发生的第一个油漆,尽管我认为这种行为违背了理论。如果有人可以用一个有效的例子来帮助我,那就完美了!
提前谢谢!
答案 0 :(得分:2)
我认为你的问题是你试图将它们视为一个干净整洁的事件序列。
但事实并非如此。正在进行的每个进程基本上都是异步的,只要它准备好就会触发。没有严格有序的序列。
绘画与HTML分离,这是有充分理由的。
考虑一个非常大的HTML文档。如果您曾在较慢的网络上加载过一个,那么您就会知道它会在准备就绪时开始显示元素,而不必等待加载完整的HTML文件。
下载并解析完整的HTML后,就会显示DOMContentLoaded
。一个缓慢的服务器实际上可能需要很长时间才能获得该文档,它不会永远只是在白色屏幕上。
对于许多文档,特别是小文档或加载速度非常快的文档,可能会DOMContentLoaded
首先触发。在较大的一个,它之前可能会有一些涂料。