A-A+
javascript中含有defer属性在IE下的执行顺序
其实就是简单的利用defer属性,让浏览器读JS脚本的时候完全不等脚本开始读就开始读下面的图片啊,html代码了,然后让js脚本自己在那里慢慢读取完以后再执行
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 先暂缓执行,一直往下走-->
- <SCRIPT language=JavaScript defer type=text/javascript>
- <!--
- msg += "Inline Head Deferredn";
- //-->
- </SCRIPT>
- <!-- 没有defer 最先被执行 -->
- <SCRIPT language=JavaScript type=text/javascript>
- <!--
- msg += "Inline Headn";
- //-->
- </SCRIPT>
- <!-- 外链defer 肯定是最后执行的-->
- <SCRIPT language=JavaScript src="defer.files/extjs1.js" defer
- type=text/javascript></SCRIPT>
- <!-- head内的外链,无所谓,从上往下被顺序执行,也就是第二个被执行的-->
- <SCRIPT language=JavaScript src="defer.files/extjs2.js"
- type=text/javascript></SCRIPT>
- <BODY class=av>
- <!--body 内的defer 先暂缓执行 程序继续往下走-->
- <SCRIPT language=JavaScript defer type=text/javascript>
- <!--
- msg += "Inline Body Deferredn";
- //-->
- </SCRIPT>
- <!--body内的语句,程序执行到这里,这是第三个被执行的 -->
- <SCRIPT language=JavaScript type=text/javascript>
- <!--
- msg += "Inline Bodyn";
- //-->
- </SCRIPT>
- <A onclick="alert(msg);return false;"
- href="javascript:;">Test Defer Attribute</A>
- <!-- 这里面有外链,且有defer,但是上面的defer应该执行了 这个语句接着往下放到head外链defer的下面-->
- <SCRIPT language=JavaScript src="defer.files/extjs3.js" defer
- type=text/javascript></SCRIPT>
- <!-- 这里是外链-->
- <SCRIPT language=JavaScript src="defer.files/extjs4.js"
- type=text/javascript></SCRIPT>
- </BODY></HTML>
其实defer的告诉浏览器读js脚本的时候完全不等脚本开始读下面的代码。然后让js脚本自己读完后在执行defer的脚本。给外链的js脚本添加defer="defer" 或 defer="true",例 特别是比较大的脚本,提高整个网页的载入速度是非常明显的。
如果不声明defer="defer" 默认是 false
总结:
普通的是边解释,边执行
defer的是网页脚本加载完的后再执行
online 的所有的内容加载完后(包括图片)执行
注意:
defer="true"还可以用作defer="defer",似乎使用defer="defer"比较普遍,我查看一个微软的文档,好像XTHML格式的网页用defer="true"比较恰当.
另外注意,defer="true"这个东西不要在脚本程序段中调用document.write命令,因为将产生直接输出效果.
如果不显式声明 defer,则其默认值 是false.