龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > Javascript编程 >

javascript中含有defer属性在IE下的执行顺序

时间:2012-12-29 08:41来源:未知 作者:admin 点击:
分享到:
其实就是简单的利用defer属性,让浏览器读JS脚本的时候完全不等脚本开始读就开始读下面的图片啊,html代码了。然后让js脚本自己在那里慢慢读取完以后再执行 defer现象描述 代码如下
其实就是简单的利用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",例<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


精彩图集

赞助商链接