[TOC]
<script>
元素用于嵌入或者引用可执行的代码。
<script>
常用属性:
- async:可选。表示应该立即下载脚本,但不应该阻碍页面中的其它操作,比如下载其它资源或者等待加载其它脚本。只对外部脚本文件有效。
- defer:可选。表示脚本可以延迟到文档完全被解析和显示之后再执行。只对外部脚本文件有效。
- src:可选。表示包含要执行代码的外部文件。
- type:可选。
- 如果不写则默认为 JavaScript MIME type 类型。
- 如果值为 module,则表示使用 ES6 的 Modules,而且不受 defer 属性的影响。
延迟脚本的执行
当 script
元素定义了 defer
属性,相当于告诉浏览器立即下载脚本,并且不阻塞页面渲染,但是脚本延迟到整个页面都解析完毕后再执行。如果多个 script
元素定义了 defer
属性,则脚本按照它们出现的先后顺序执行。
异步执行脚本
script
元素定义了 async
属性,相当于告诉浏览器异步下载脚本,并尽可能快地执行脚本。异步下载脚本的过程并不阻塞页面的渲染。
有几点需要注意:
- 如果多个
script
元素定义了async
属性,它们的执行顺序是不能够保证的。谁先下载完就谁先执行,这一点与defer
不一样。 - 异步脚本一定会在页面的
load
事件前执行。