JS中的延迟脚本与异步脚本

<script defer="defer" src="a.js"></script>

上述代码中的defer标签即为延迟脚本的标志,

效果:加了这个标签后即使脚本在HTML的<head>元素中,这个脚本也会在浏览器遇到</html>标签后才运行

作用:这样做脚本就不会影响页面的构造,从而让页面快速解析,因为如果没有这个标签的话,浏览器加载页面是从上到下的,即当它读取到脚本的时候他会先去下载并且加载,这样就影响了页面的速度,而defer标签则让其延迟加载.浏览器开始解析HTML网页 解析过程中,发现带有defer属性的script标签 浏览器继续往下解析HTML网页,同时并行下载script标签中的外部脚本 浏览器完成解析HTML网页,此时再执行下载的脚本。

注意事项:如果有两个或者以上的延迟脚本,理论上他们会按照顺序来执行,但实际上有时候并不会,所以最好只包含一个延迟脚本.

 

<script async src="a.js"></script>

效果:加了这个标签后即使脚本在下载完之后才加载,而且下载和解析网页时同时进行的。

作用:浏览器开始解析HTML网页,解析过程中,发现带有async属性的script标签 浏览器继续往下解析HTML网页,同时并行下载script标签中的外部脚本 ,脚本下载完成,浏览器暂停解析HTML网页,开始执行下载的脚本, 脚本执行完毕,浏览器继续解析HTML网页。

注意事项:尽量不要在异步脚本的加载期间修改dom。

 

总结:defer属性是先下载完脚本然后执行完HTML再加载脚本,而async属性是哪个下载完了就立刻加载,后面的脚本有可能下载的比前面的快,这也是为什么async不能保证加载顺序的原因,当两个标签同时存在时,async不起作用,两个属性都只对外部脚本有用,这两个标签都有效的防止阻塞效应的出现,提高网页的加载速度。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值