Dom加载解析

作者: 一只好奇的茂 | 来源:发表于2017-06-15 08:20 被阅读66次

    加载顺序

    1. 解析HTML结构;
    2. 加载外部脚本和样式表文件;
    3. 解析并执行脚本代码;
    4. 构造HTML DOM模型;
    5. 加载图片等外部文件;
    6. 页面加载完毕;
    实例演示
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Title</title>
        <style type="text/css">
            body
            {
                font-sie: 12px;
            }
        </style>
        <link href="style.css" rel="stylesheet" type="text/css" media="all" />
        <script src="js.js" type="text/javascript"></script>
    </head>
    <body>
        <div>
            <script type="text/javascript">
                function f1() { }
            </script>
            ![](1.gif)
        </div>
        <script type="text/javascript">
            function f2() { }
        </script>
    </body>
    </html>
    

    html → head → title → #text(网页标题) → style → 加载样式 → 解析样式 → link → 加载外部样式表文件 → 解析外部样式表 → script → 加载外部脚本文件 → 解析外部脚本文件 → 执行外部脚本 → body → div → script → 加载脚本 → 解析脚本 → 执行脚本 → img → script → 加载脚本 → 解析脚本 → 执行脚本 → 加载外部图像文件 → 页面初始化完毕

    两种方法实现在HTML页面加载完毕后运行某个js

    两种方法

    load方法:

    <script type="text/javascript"> 
         window.onload=function(){ 
             var userName="xiaoming"; 
            alert(userName); 
        } 
    </script> 
    

    ready方法(需引入jquery):

    <script type="text/javascript"> 
          $(document).ready(function(){ 
              var userName="xiaoming"; 
              alert(userName); 
         }); 
    </script> 
    

    或者其简写

    $(function(){ 
         var userName="xiaoming"; 
         alert(userName); 
    }); 
    
    ready和load的区别
    • ready:
      表示文档结构已经加载完成(不包含图片等非文字媒体文件),即所有元素对脚本而言都是可以访问的,但是,并不意味着所有关联的文件都已经下载完毕。换句话说,当HMTL下载完成并解析为DOM树之后,代码就会执行。
    • load:
      表示页面包含图片等外部文件在内的所有元素都加载完成,页面上的全部元素对js而言都是可以操作的,也就是说页面上的所有元素加载完毕才会执行。这种情况对编写功能性代码非常有利,因为无需考虑加载的次序。
    • 举个例子:
      假设有一个表现图库的页面,这种页面中可能会包含许多大型图像,我们可以通过jQuery隐藏、显示或以其他方式操作这些图像。如果我们通过onload页面设置界面,那么用户在能够使用这个页面之前,必须要等到每一幅图像都下载完成。更糟糕的是,如果行为稍微添加给哪些具有默认行为的元素(比如链接),那么用户的交互可能会导致意想不到的结果。然而当我们试用$(document).ready(){ }进行设置时,这个界面就会更早地准备好可用的正确行为。
      使用$(document).ready(){ }一般来说都要优于试用onload事件处理程序,但必须要明确一点的是,因为支持文件可能还没有家在完成,所以类似图像的高度和宽度这样的属性此时不一定有效。

    参考文章

    认识DOM以及DOM加载过程

    相关文章

      网友评论

        本文标题:Dom加载解析

        本文链接:https://www.haomeiwen.com/subject/dokyqxtx.html