09
2019
01

js延迟脚本

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 事件(详见第 13 章)

执行。在现实当中,延迟脚本并不一定会按照顺序执行,也不一定会在 DOMContentLoaded 事件触发

前执行,因此最好只包含一个延迟脚本。

前面提到过,defer 属性只适用于外部脚本文件。这一点在 HTML5 中已经明确规定,因此支持

HTML5 的实现会忽略给嵌入脚本设置的 defer 属性。IE4~IE7 还支持对嵌入脚本的 defer 属性,但

IE8 及之后版本则完全支持 HTML5 规定的行为。

IE4、Firefox 3.5、Safari 5 和 Chrome 是最早支持 defer 属性的浏览器。其他浏览器会忽略这个属

性,像平常一样处理脚本。为此,把延迟脚本放在页面底部仍然是最佳选择。

« 上一篇下一篇 »

相关文章:

JavaScript instanceof 深入讲解(转)  (2019-1-14 16:42:6)

js splice()方法  (2019-1-10 16:30:32)

js 检测数组  (2019-1-10 15:44:8)

js异步脚本  (2019-1-9 11:50:42)

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。