2.1.2 延迟脚本
HTML 4.01为<script>标签定义了defer属性。这个属于用途:表明脚本在执行时不会影响页面的构造。
即,脚本会被延迟到整个页面都解析完毕后再运行。
因此,在<script>元素中设置 defer 属性,相当于告诉浏览器立即下载,但延迟执行。
<!DECTYPE 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 属性只适用于 外部脚本文件。
注:在XHTML文档中,要把 defer 属性设置为 defer="defer"。