论坛首页 Web前端技术论坛

关于对defer的理解.

浏览 18677 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-07-02  
<script defer>
function init(){
document.getElementById("div").innerHTML="OK";
}
init();
</script>
<div id="div">如果你能看到这一句,那就是说没有达到我所要的效果
<img src="http://icon.ajiang.net/icon_0.gif" />
</div>


在IE6和FIREFOX2下完全不一样
0 请登录后投票
   发表时间:2007-07-02  
defer的含义并不是这样的。

在w3c标准中defer的本意只是表示这段脚本不会输出文档内容,所以可以继续解析和呈现。至于执行顺序,完全语焉不详。而且这个属性只是一个hint,没有说必须如此,所以许多浏览器根本不睬这个属性。

但是在defer属性的创造者ms那里,是有execute顺序的,关于defer的稀奇古怪的行为请看:http://www.websiteoptimization.com/speed/tweak/defer/

显然defer是个讨厌的东西,需要慎用。
0 请登录后投票
   发表时间:2007-07-02  
Lucas Lee 写道
查了一下MSDN的DHTML Reference不就知道了?
这是一个符合w3c标准的属性,所以解释是通用的。
http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/defer.asp

defer,我的理解是,等下载完所有的页面后再执行。



如前所述,千万不要以为msdn的描述是可靠的,通用的。实际上msdn经常会有自己打自己耳光的事情。
0 请登录后投票
   发表时间:2007-07-03  
defer只是告诉浏览器你的这段脚本不会向文档输出内容,有的浏览器可以进行优化,还是不要用这个来控制执行顺序的好。
0 请登录后投票
   发表时间:2007-07-03  
正在制定的html5有极大可能会完善script标签的定义。

会有两个属性,async和defer。

其中defer将明确为在整个page的parsing结束之后执行(执行时机差不多就是DOMContentLoad或者IE htc的ondocumentready)。并且会严格按照所有defer的script的顺序执行。

0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics