<script> 标签上的 defer 和 async 属性是什么?

简介: 它会执行以下步骤1.暂停 HTML 文档解析器2.创建新请求以下载脚本3.在脚本完全下载后立即执行脚本4.执行结束后,继续解析 HTML 文档

当我们遇见script的时候

<script src="/path/to/script.js"></script>

它会执行以下步骤

1.暂停 HTML 文档解析器

2.创建新请求以下载脚本

3.在脚本完全下载后立即执行脚本

4.执行结束后,继续解析 HTML 文档


此流程提供了糟糕的用户体验,假如脚本下载时间过长,用户将无法与页面交互。在看到整个页面被解析之前,他们必须等待所有脚本被下载并完全执行。


为了解决这个问题,HTML5 为 script 标签提供了两个属性。它们是 async 和 defer

async

<script src="/path/to/script.js" async></script>

下载 async 脚本后,浏览器将暂停文档解析器,执行脚本并继续解析文档。

1.解析文档

2.下载脚本

3.暂停解析

4.执行脚本

5.恢复解析

defer

<script src="/path/to/script.js" defer></script>

只有当解析器完成其工作时,才会执行 defer 脚本。

1.解析文档

2.下载脚本

3.执行脚本

注意:这个过程文档是不会停止解析的

注意

注意:没有 src 属性的脚本(即不是内联脚本),async 和 defer 属性会被忽略。

相关文章
|
29天前
|
JavaScript 前端开发 Go
理解 <script> 标签的 defer 和 async 属性
理解 <script> 标签的 defer 和 async 属性
22 3
|
18天前
|
JavaScript 前端开发 API
JQuery的attr()属性和JS的属性的方法
JQuery的attr()属性和JS的属性的方法
10 0
|
Go API
script标签中defer和async有什么不同?
script标签中defer和async有什么不同?
85 0
script标签中defer和async有什么不同?
|
移动开发 JavaScript HTML5
JS : attr()和prop()和is() 取值的区别
简单区别就是,attr操作HTML元素的属性,prop操作DOM元素的属性,因为DOM会解析某些HTML元素属性到自己身上,此时prop和attr都能操作这些属性。
|
JavaScript Go
script标签中的defer与async
script标签中的defer与async
script标签中的defer与async
|
前端开发 JavaScript
js回调函数--callback
js回调函数--callback
|
JavaScript 前端开发 Go
【青训营】- Script标签中async和defer属性总结
【青训营】- Script标签中async和defer属性总结
120 0
|
移动开发 小程序 Go
Async、defer以及普通加载script区别详解
如果用一张图片诠释这几种script加载的特点,应该是这样的:
138 0
Async、defer以及普通加载script区别详解

热门文章

最新文章