在正常情况下,DOMContentLoaded 事件通常会在 load 事件之前触发。DOMContentLoaded 事件在 HTML 文档被完全加载和解析后触发,而 load 事件则是在所有资源(如图片、样式表、脚本等)都加载完成后触发。因此,DOMContentLoaded 通常会在 load 事件之前触发。
然而,在某些情况下,DOMContentLoaded 事件可能会晚于 load 事件触发。这种情况通常与以下原因有关:
<script async>),这些脚本可能会在 DOMContentLoaded 事件触发之前或之后执行。如果这些脚本的执行时间较长,可能会导致 DOMContentLoaded 事件延迟触发。DOMContentLoaded 事件触发之前执行,并且脚本中包含了阻塞 DOM 解析的代码(例如同步的 document.write),那么 DOMContentLoaded 事件可能会被延迟到 load 事件之后。document.createElement('script') 并插入到 DOM 中),这些脚本的加载和执行可能会影响 DOMContentLoaded 事件的触发时机。load 事件触发之后才加载和执行,那么 DOMContentLoaded 事件可能会被延迟到 load 事件之后。async 或 defer 的脚本),这些资源可能会延迟 DOMContentLoaded 事件的触发。DOMContentLoaded 事件在 load 事件之后触发。load 事件。DOMContentLoaded 事件的触发时机。document.write 等阻塞操作。async 或 defer 属性来加载脚本,避免阻塞 DOM 解析。通过以上方法,可以尽量避免 DOMContentLoaded 事件晚于 load 事件触发的情况。