在正常情况下,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
事件触发的情况。