defer现象描述
代码如下 | 复制代码 |
<HTML><HEAD><TITLE>JavaScript defer attribute test page - tests deferring scripts in browsers</TITLE> <SCRIPT language=JavaScript type=text/javascript> <!-- var msg = ""; //--> </SCRIPT> <!-- 这里是内部defer 先暂缓执行,一直往下走--> <!-- 没有defer 最先被执行 --> <!-- 外链defer 肯定是最后执行的--> <!-- head内的外链,无所谓,从上往下被顺序执行,也就是第二个被执行的--> <BODY class=av> <!--body内的语句,程序执行到这里,这是第三个被执行的 --> <A onclick="alert(msg);return false;" <!-- 这里面有外链,且有defer,但是上面的defer应该执行了 这个语句接着往下放到head外链defer的下面--> <!-- 这里是外链--> |
其实defer的告诉浏览器读js脚本的时候完全不等脚本开始读下面的代码。然后让js脚本自己读完后在执行defer的脚本。给外链的js脚本添加defer="defer" 或 defer="true",例<script src="javascript.js" type="text/javascript defer="defer"/> 特别是比较大的脚本,提高整个网页的载入速度是非常明显的。
如果不声明defer="defer" 默认是 false
总结:
普通的是边解释,边执行
defer的是网页脚本加载完的后再执行
online 的所有的内容加载完后(包括图片)执行
注意:
defer="true"还可以用作defer="defer",似乎使用defer="defer"比较普遍,我查看一个微软的文档,好像XTHML格式的网页用defer="true"比较恰当。
另外注意,defer="true"这个东西不要在脚本程序段中调用document.write命令,因为将产生直接输出效果
如果不显式声明 defer ,则其默认值 是false