DOMContentLoaded 是个啥?在优化首屏的同学进来可能有灵感
就几个点
DOMContentLoaded 事件,我们需要了解下面几个点即可:
-
此事件触发时,DOM 已经加载并且解析完成,此时可以使用 JS 语法操作 DOM 树了;
-
此事件触发时,延迟脚本(
<script>元素的defer属性值设置为true或者type属性值设置为module的外联 JS 脚本)已经加载和执行完成; -
不会等待图片、iframe 和异步外联脚本(
<script>元素的async属性值设置为true的外联 JS 脚本)加载和执行结束;
应用场景
-
页面性能监控:通过监听
DOMContentLoaded事件,可以计算页面从开始加载到 DOM 加载完成所花费的时间,从而评估页面的加载性能,并进行相应的优化; -
图片懒加载:当网页中有大量图片需要加载时,可以将一部分图片的
src属性设置为空,只保留data-src属性,并在DOMContentLoaded事件触发后,通过 JavaScript 将data-src的值赋给 src 属性,实现图片的懒加载效果; -
异步脚本加载:如果网页中有一些关键的 JavaScript 脚本需要优先加载并执行,而其他非关键脚本可以延迟加载,可以将这些非关键脚本的加载逻辑放在
DOMContentLoaded事件处理程序中; -
响应式布局:在移动设备上,可能需要根据屏幕尺寸和方向动态调整页面布局。可以在
DOMContentLoaded事件触发后,根据当前设备的属性(如窗口大小、屏幕方向等)来设置相应的样式或布局; -
异步请求和数据加载:如果网页需要通过异步请求加载数据或资源,可以将这些异步请求的代码放在
DOMContentLoaded事件处理程序中。这样可以确保在页面的 DOM 结构加载完成后再开始发送异步请求,避免出现执行顺序上的问题。以上场景,在首屏性能要求高的网页可考虑应用。