首页 > 关于DOMContentLoaded的疑惑

关于DOMContentLoaded的疑惑

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

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

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

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

请大家赐教啊~!


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

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


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


原文: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事件的影响

【热门文章】
【热门文章】