zoukankan      html  css  js  c++  java
  • 关于对defer的理解.

    代码
     
    1. <script defer>  
    2. function init(){   
    3. document.getElementById("div").innerHTML="OK";   
    4. }   
    5. init();   
    6. </script>  
    7. <div id="div">如果你能看到这一句,那就是说没有达到我所要的效果   
    8. <img src="http://icon.ajiang.net/icon_0.gif" />  
    9. </div


     

    在IE6和FIREFOX2下完全不一样

    IE6中最后执行结果是OK,而firefox中是“如果你能看到这一句,那就是说没有达到我所要的效果”

    我觉得defer这个东西 有推迟执行的意思,IE6里面先解析完所有html代码再执行defer中的脚本

    firefox中 先执行脚本后解析html

    不知道这样的理解是否有误?

    defer的含义并不是这样的。

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

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


    正在制定的html5有极大可能会完善script标签的定义。

    会有两个属性,async和defer。

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

     
     
  • 相关阅读:
    常用的设计模式汇总
    设计模式总结
    C# WinForm文章收集
    SQL Server 2012/2016/2017 新增函数
    SQL Server 日期函数大全
    【BZOJ3622】已经没有什么好害怕的了
    【SDOI2009】Bill的挑战
    【HDU4507】恨7不成妻
    BSOJ 2423 -- 【PA2014】Final Zarowki
    BSOJ 4591 -- 【JLOI2015】城池攻占
  • 原文地址:https://www.cnblogs.com/daishuguang/p/4153057.html
Copyright © 2011-2022 走看看