它们两个最基本的区别就是:在加载HTML文档时,domcontentloaded事件要先于load事件,但是在具体分析时,网上有很大一部分分析有错。请看下方:
DOM文档加载的步骤为:
1、解析HTML结构。
2、加载外部脚本和样式表文件。
3、解析并执行脚本代码。
4、DOM树构建完成。//DOMContentLoaded
5、加载图片等外部文件。
6、页面加载完毕。//load
其中第二条,运行到DOMContentLoaded这一步时,并不加载样式表文件,原因是查看MDN的解释:
当初始HTML文档已完全加载和解析时,将触发DOMContentLoaded事件,而无需等待样式表,图像和子框架完成加载。一个非常不同的事件load 应该仅用于检测完全加载的页面。
所以我们看第五步,到底说的图片等外部文件,这个等,等的谁?,在MDN上可以明显看出是样式表,图像和子框架,当然还包括flash。
需要注意的是,CSS会阻塞图片的加载,所以一般会先加载css样式表,然后加载图片。JS并不会阻塞图片加载。