HTML <script> defer 属性

定义和用法

defer 属性是一个布尔属性。

如果设置了 defer 属性,则指定脚本在解析页面的同时并行下载,并在页面解析完成后执行。

注意:defer 属性仅适用于外部脚本(只有存在 src 属性 时才应使用)。

注意:可以通过多种方式执行外部脚本:

  • 如果已设置 async:脚本会在解析页面的同时并行下载,并在可用时立即执行(在解析完成之前)
  • 如果已设置 defer(而未设置 async):脚本会在解析页面的同时并行下载,并在页面解析完成后执行
  • 如果既没有 async 也没有 defer:脚本被立即下载并执行,阻塞页面解析,直到脚本执行完成

实例

脚本将与页面解析并行下载,并在页面完成解析后执行:

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

亲自试一试

语法

<script defer>

推迟脚本的执行

您可以用 async 和 defer 属性对脚本的执行方式加以控制。defer 属性告诉浏览器要等页面载入和解析完毕之后才能执行脚本。

浏览器在遇到带有 defer 属性的 script 元素时,会将脚本的加载和执行推迟到 HTML 文档中的所有元素都已得到解析之后。

这与将 script 移到页面末尾的结果是一样的:

<body>
... ...
... ...
... ...

<script src="demo.js"></script>
</body>

浏览器支持

表中的数字注明了首个完全支持该属性的浏览器版本。

Chrome Edge Firefox Safari Opera
Chrome Edge Firefox Safari Opera
8.0 10.0 3.5 5.0 15.0