JavaScript 笔记 - <script>标签 defer属性 (延迟脚本)

来源:互联网 发布:美国历史人物 知乎 编辑:程序博客网 时间:2024/05/15 00:25

JavaScript 笔记 - < script>标签 defer属性 (延迟脚本)


HTML 4.01 为 < script> 标签定义了 defer 属性。这个属性的用途是表明脚本在执行时不会影响页面的构造。也就是说,脚本会被延迟到整个页面都解析完毕后再运行。因此,在< script>元素中设置defer 属性,相当于告诉浏览器立即下载,但延迟执行。

<!DOCTYPE html><html><head><title>Example HTML Page</title><script type="text/javascript" defer="defer" src="example1.js"></script><script type="text/javascript" defer="defer" src="example2.js"></script></head><body><!-- 这里放内容 --></body></html

在这个例子中,虽然我们把 < script> 元素放在了文档的< head>元素中,但其中包含的脚本将延迟到浏览器遇到< /html>标签后再执行。 HTML5 规范要求脚本按照它们出现的先后顺序执行,因此第一个延迟脚本会先于第二个延迟脚本执行,而这两个脚本会先于 DOMContentLoaded 事件执行。在现实当中,延迟脚本并不一定会按照顺序执行,也不一定会在 DOMContentLoaded 事件触发前执行,因此最好只包含一个延迟脚本。defer 属性只适用于外部脚本文件。这一点在 HTML5 中已经明确规定,因此支持HTML5 的实现会忽略给嵌入脚本设置的 defer 属性。 IE4~IE7 还支持对嵌入脚本的 defer 属性,但IE8 及之后版本则完全支持 HTML5 规定的行为。IE4、 Firefox 3.5、 Safari 5 和 Chrome 是最早支持 defer 属性的浏览器。其他浏览器会忽略这个属性,像平常一样处理脚本。为此,把延迟脚本放在页面底部仍然是最佳选择。

在 XHTML 文档中,要把 defer 属性设置为 defer=”defer”。

0 0