DOMContentLoaded与load事件

本文介绍了DOMContentLoaded和load事件的区别。DOMContentLoaded事件在DOM解析完成时触发,不等待资源加载,而load事件则等到所有资源包括图片、样式等加载完毕。在jQuery中,$(document).ready与DOMContentLoaded相似,都在DOM准备就绪时执行。应谨慎选择使用事件,避免不必要的延迟。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MDN参考:
- DOMContentLoaded
- load

区别

  • DOMContentLoaded: DOM解析完成即触发此事件,不等待styles, images等资源的加载
  • load:依赖的资源也已加载完成
  • DOMContentLoaded绑定到document,load绑定到window
document.addEventListener('DOMContentLoaded', function(event) {
  console.log("DOM fully loaded and parsed");  // 先打印
});
window.addEventListener('load', function(event) {
  console.log("img loaded");  // 后打印
}); 

jquery的$(document).ready

dom解析完成后即执行,不等待资源的加载。因此在DOMContentLoaded事件触发后执行。内部实现可简略如下

document.ready = function(cb) {
    document.addEventListener('DOMContentLoaded', function() {
        cb();
    });
};

注意

  1. 应该更适合使用DOMContentLoaded的场合不要使用load, 以免造成不必要的延迟。

    It is an incredibly popular mistake to use load where DOMContentLoaded would be much more appropriate, so be cautious.

  2. js 执行的延迟会造成DOM解析延迟,从而延迟触发DOMContentLoaded事件

<script>
  document.addEventListener("DOMContentLoaded", function(event) {
    console.log("DOM fully loaded and parsed");
  });

for(var i=0; i<1000000000; i++){} 
// this synchronous script is going to delay parsing of the DOM. So the DOMContentLoaded event is going to launch later.
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值