DOMContentLoaded 和 load 事件的区别

IT技术 javascript browser
2021-01-14 02:22:28

DOMContentLoadedload事件和有什么不一样

6个回答

来自Mozilla 开发者中心

DOMContentLoaded 事件在文档完全加载和解析后触发,无需等待样式表、图像和子框架完成加载(加载事件可用于检测完全加载的页面)。

@abhisekp 不错的教程,尽管该视频链接现已过时
2021-03-24 02:22:28
仅供参考,同一个 MDN 链接 [现在] 也说:“注意:样式表加载块脚本执行,所以如果在 <link rel="stylesheet" ...> 之后有一个 <script>,页面将无法完成解析 -并且 DOMContentLoaded 不会触发 - 直到加载样式表。”
2021-03-25 02:22:28
@Nick 这个页面给出了原因。html5rocks.com/en/tutorials/internals/howbrowserswork 不过我建议您观看页面中的视频。
2021-04-05 02:22:28
@Onkeltem 啊,但是 A 的定义包括 B 在它的末尾所做的事情😉
2021-04-07 02:22:28
所以渲染树是在 DOMContentLoaded 被触发后构建的。但是 DOMContentLoaded 不会根据developer.mozilla.org/en-US/docs/Web/API/Window /... 等待图像/子资源/子帧完成加载您是否知道这些图像/子帧/子资源是在构建后被渲染树调用,还是在渲染树仍在构建时被 DOM 树调用?换句话说,渲染树是否触发了一堆连接来下载这些图像/子帧/子资源,或者它们的下载之前已经在进行中?
2021-04-10 02:22:28

DOMContentLoaded事件将在 DOM 层次结构完全构建后立即触发,该load事件将在所有图像和子帧加载完成后执行。

DOMContentLoaded将适用于大多数现代浏览器,但不适用于 IE,包括 IE9 及更高版本。有一些变通方法可以在旧版本的 IE 上模拟此事件,例如在 jQuery 库中使用的方法,它们会附加IE 特定 onreadystatechange事件。

“此事件” = DOMContentLoaded。它在 IE8 中不起作用。如果您需要支持它,请使用 CMS 链接到的解决方法
2021-03-18 02:22:28
当您说“此事件”时,您指的是哪个事件?
2021-03-21 02:22:28

自己看看区别:

演示

来自微软 IE

DOMContentLoaded 事件在当前页面解析完成时触发;当所有文件从所有资源(包括广告和图像)加载完毕后,将触发 load 事件。DOMContentLoaded 是一个很好的事件,用于将 UI 功能连接到复杂的网页。

来自Mozilla 开发者网络

DOMContentLoaded 事件在文档完全加载和解析后触发,无需等待样式表、图像和子框架完成加载(加载事件可用于检测完全加载的页面)。

是否DOMContentLoaded保证所有脚本(包括延迟/异步)都已加载?这里没有关于脚本的说明:developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded
2021-03-20 02:22:28
@Jatimir 我认为 defer 和 async 属性有不同的行为。
2021-03-21 02:22:28
@Sergey 不。异步资源 - 即 <script async src=app.js/> - 独立于页面的其余部分加载,因此可能会在从服务器获取资源之前触发 DOMContentLoaded
2021-03-31 02:22:28
@MehradSadegh 我认为你错了!来自MDN 文档具有 defer 属性的脚本将阻止 DOMContentLoaded 事件触发,直到脚本加载并完成评估。你可以看看这个 SO question,它证实了这一点:stackoverflow.com/questions/42950574/...
2021-04-06 02:22:28
@Jatimir 很高兴你无论如何都发布了,因为你的贡献正是我想要的!谢谢!
2021-04-10 02:22:28

DOMContentLoaded==window.onDomReady()

Load==window.onLoad()

在文档“准备好”之前,不能安全地操作页面。jQuery 会为您检测这种准备状态。包含在其中的代码$(document).ready()只会在页面文档对象模型 (DOM) 准备好执行 JavaScript 代码时运行。$(window).load(function() { ... })一旦整个页面(图像或 iframe),而不仅仅是 DOM,准备好后,其中包含的代码就会运行。

请参阅:使用 JQuery Core 的文档就绪文档

问题不在于 jQuery。
2021-03-30 02:22:28
@ user34660 不是,但有助于理解。
2021-03-30 02:22:28
没有这样的事情 window.onDomReady()
2021-04-04 02:22:28
  • domContentLoaded:标记 DOM 准备就绪并且没有样式表阻止 JavaScript 执行的时间点——这意味着我们现在可以(可能)构建渲染树。许多 JavaScript 框架在开始执行自己的逻辑之前会等待此事件。出于这个原因,浏览器会捕获 EventStart 和 EventEnd 时间戳,以允许我们跟踪此执行所花费的时间。

  • loadEvent:作为每个页面加载的最后一步,浏览器会触发“onload”事件,该事件可以触发额外的应用程序逻辑。

来源

如果我有任何带有 url 到 JS 的脚本标签,它们会在 domContentLoaded 之前还是之后加载?
2021-03-12 02:22:28