javascript - 关于DOMContentLoaded的疑惑
ringa_lee
ringa_lee 2017-04-10 16:10:03
[JavaScript讨论组]

JavaScript高级程序设计(第3版)里面提到

而DOMContentLoaded事件则在形成完成的DOM树之后就会触发,不会理会图像,JavaScript文件,css文件或其他资源是否已经下载完毕

那个,注册这个事件的代码,我应该放在哪里呢?
是放在 html文件里面呢?还是放在单独的js文件里?

我考虑到的是放在单独的js文件里.但是问题在于,这个事件不会等待所有的资源都下载完毕,那这样就会出现触发了
DOMContentLoaded事件,然后我的js文件才下载下来.这就很困惑了

请大家赐教啊~!

ringa_lee
ringa_lee

ringa_lee

全部回复(3)
高洛峰

原文:The DOMContentLoaded event is fired when the initial HTML document has been completely loaded and parsed, without waiting for stylesheets, images, and subframes to finish loading.

并没有包含js文件,所以还是会等待所有静态的js(非动态插入的js)文件执行完之后才会出发这个DOMContentLoaded事件的。

要详细了解,可以参考这篇文章,写的非常清晰JS、CSS以及img对DOMContentLoaded事件的影响

迷茫

DOM树形成时,JS文件已经下载完了(你要是把JS文件放在html标签的外面,那就另说了)。

DOM树形成是解析到html的闭合标签,而正常的JS是在html标签内的,并且JS是阻塞加载,在没有加载完成时,是不会解析后面的内容的。

大家讲道理

想一下你在页面里的<script></script>和<link/>元素是在<html>元素内部的,DOM树的形成从<html>开始一直解析到</html>元素,当解析到<script></script>和<link/>元素时就会下载这些文件,所以你的担心是多余的。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号