同步加载、异步加载

本文详细介绍了JavaScript中的同步加载与异步加载,特别是`defer`和`async`属性的使用。同步加载会阻塞浏览器解析,而异步加载则避免了这一问题。`defer`确保脚本在DOM解析完成后执行,而`async`则在脚本加载完后立即执行。在使用异步加载时,需要注意不要操作文档,且动态创建的`script`标签在设置`src`属性时开始下载,在插入HTML时执行。对于需要异步加载并执行特定函数的情况,可以通过监听`onload`或`onreadystatechange`事件来实现。
摘要由CSDN通过智能技术生成

同步加载

<link>标签是异步的。

script里的内容默认是同步模式,也叫阻塞模式

q:为什么script不是异步

a:如果script是异步,会出现DOM结构还没有解析完成,script中已经操作DOM的情况,会产生冲突

q:为什么script一般放在body最后

a:解析到script加载脚本时,会阻塞浏览器后续的处理,停止后续对DOM解构的解析,同时也会停止后续文件的加载、渲染,以及代码的执行,如DOM Tree, CSSOM的处理,CSS资源的加载,图片的加载,所以说一般放在body的最后 -> 只能极大可能性的减少阻塞,并不能完全解决阻塞问题

异步加载

异步加载的表现:浏览器并行的加载js文件,加载的同时不会阻塞浏览器后续的处理,如加载和渲染,这样的处理成为异步加载。

defer

IE8及以下到IE4都兼容,异步的加载js脚本文件,但是下载完了之后并不会立即

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值