document 的 DOMContentLoaded 事件什么时候 readyState === 'complete' ?

2021-05-17 20:31:21 +08:00
 hm20062006ok

在文档最底部插入以下脚本:

document.addEventListener("DOMContentLoaded", function(event) { console.log(event.target.readyState); //这里的 readyState 一直是 'interactive' 吗? }, false);

1409 次点击
所在节点    JavaScript
6 条回复
DOLLOR
2021-05-17 20:34:57 +08:00
hm20062006ok
2021-05-17 21:00:19 +08:00
@DOLLOR 好的。 但我还是好奇它在什么情况下会是 complete
xiaopc
2021-05-17 21:10:58 +08:00
HTML 被全部加载并且解析为 DOM 后就触发 DOMContentLoaded ; readyState 有三种状态,在子资源全部加载完成后才是 complete 。

MDN 一查就有解释
hm20062006ok
2021-05-17 23:47:44 +08:00
@xiaopc 为了“子资源全部加载完成”, 我放了一张大图片。如下代码,可是还是没有监听到 complete?

https://gist.github.com/hm20062006ok/80fad49a847d83461eeaa2656ddae29e
xiaopc
2021-05-18 13:58:43 +08:00
......
你这段代码监听的是 DOMContentLoaded,那时候当然没加载完成啊。要按 #1 说的监听 readystatechange 事件。
jokerai
2021-05-20 13:42:07 +08:00
DOM 解析生命周期
异步脚本、延迟脚本与 DOMContentLoaded 的关系
https://www.cnblogs.com/Bonnie3449/p/8419609.html

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/777514

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX