defer与async在<script>标签上的作用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script defer src="example1.js"></script>
    <script defer src="example2.js"></script>
</head>
<body>
    
</body>
</html>

使用原因:

        由于代码从上到下依次执行,如果将<script>标签放到<head>标签中引入外部js文件时,会阻塞<body>中DOM的生成,则会导致页面一打开时会出现长时间空白页。为了防止该现象产生便引入了defer和async属性。

共同点:

        defer和async两者都是异步执行js文件的方式。

区别:

1.defer:

        在script标签上使用defer,表示该<script>标签引入的外部js会立即下载但会推迟执行,直到代码走完</html>时才会执行。在新H5中明确规定,defer的执行顺序按照书写顺序执行,并且两者皆是在DOMContentLoaded事件之前执行,但在实际情况中并不按照该顺序执行。async在加载脚本的

        目前支持defer属性的是从IE4,Firefox3.5,Safari5,Chrome7开始的。

        在XHTML中的书写形式应为 "defer"="defer", 不能只写defer单个

2.async:

        在<script>标签上使用async表示该外部资源会与DOM一起加载并执行,是属于同时进行,并且其他脚本也无需等待上一个脚本下载或加载完成之后再下载执行,与defer不同的是async标记的<script>并不一定会按照书写顺序加载。异步脚本在加载期间不应该修改DOM,因为在获取DOM时出错。

        目前支持async的有Firefox3.6,Safari5,Chrome7

        在XHTML中的书写形式应为 "defer"="defer", 不能只写defer单个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值