• 细说document.ready和window.onload


    原文

      简书原文:https://www.jianshu.com/p/bbf28d61aa1f

    大纲

      1、对页面加载的认识
      2、关于document.ready()
      3、关于document.onload()
      4、document.ready和window.onload的区别
      5、为什么要使用document.ready()或者document.onload()
      6、document.ready()的使用场景

    1、对页面加载的认识

      一般情况下,一个页面的相应加载顺序是:域名解析——>加载html——>加载js和css——>加载图片等其他信息。

    2、关于document.ready()

      执行时机:在DOM完全就绪时就可以被调用。
      多次使用:在同一个文件中多次使用,一次调用。
      理解:document.ready()的意思是在DOM加载完成之后执行ready()方法中的代码,换句话说,这个方法的本意是为了让代码的执行时间是在DOM加载完成之后才开始执行。

    /*
      多次使用:运行结果为:先是one,然后是two
    */
    function one(){
        alert("one");
    }
    function two(){
        alert("two");
    }
    $(document).ready(function(){
        one();
    });
    $(document).ready(function(){
        two();
    });
    
    /*
      写法
    */
    //jq的写法
    $(document).ready(function(){
        //do something
    });
    //简写,默认document
    $().ready(function(){
        //do somethin
    });
    //简写
    $(function(){
        //do something
    });
    

    3、关于document.onload()

      执行时机:在网页中所有元素(包括元素的所有关联文件)完全加载到浏览器后才执行,即JavaScript此时可以访问网页中的所有元素。
      多次执行:JavaScript的onload事件一次只能保存对一个函数的引用,他会自动调用最后面的函数覆盖前面的函数。

    /*
      多次使用:运行结果为:只执行了two
    */
    function one(){
        alert("one");
    }
    function two(){
        alert("two");
    }
    
    window.onload = one;
    window.onload = two;
    
    /*
      写法
    */
    window.onload = function(){
        //do something
    }
    //等价于
    $(window).load(function(){
        //do something
    })
    

    4、document.ready和window.onload的区别

      document.ready和window.onload的区别——JavaScript文档加载完成事件。
      页面加载完成有两种事件:
        一是ready,表示文档结构已经加载完成(不包含图片等非文字媒体文件)。
        二是onload,指示页面包含图片等文件在内的所有元素都加载完成。

    5、为什么要使用document.ready()或者document.onload()

      $(document).ready() 里的代码是在页面内容都加载完才执行的,如果把代码直接写到script标签里,当页面加载完这个script标签就会执行里边的代码了,此时如果你标签里执行的代码调用了当前还没加载过来的代码或者dom,那么就会报错,当然如果你把script标签放到页面最后面那么就没问题了,此时和ready效果一样。

    6、document.ready()的使用场景

      点击段落,此段落隐藏

    <html>
    <head>
        <meta charset="utf-8">
        <title>
            test
        </title>
        <script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script>
        <script>
            $(document).ready(function () {
                $("p").click(function () {
                    $(this).hide();
                });
            });
        </script>
    </head>
    <body>
        <p>If you click on me,I will disappear.</p>
    </body>
    </html>
    

      如果把$(document).ready(function(){});去掉后,无法隐藏段落

    <html>
    <head>
        <meta charset="utf-8">
        <title>
            test
        </title>
        <script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script>
        <script>
            $("p").click(function () {
                $(this).hide();
            });
        </script>
    </head>
    <body>
        <p>If you click on me,I will disappear.</p>
    </body>
    </html>
    

      但是把script放到页面最后的话,就可恢复隐藏效果

    <html>
    <head>
        <meta charset="utf-8">
        <title>
            test
        </title>
        <script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script>
    </head>
    <body>
        <p>If you click on me,I will disappear.</p>
        <script>
            $("p").click(function () {
                $(this).hide();
            });
        </script>
    </body>
    </html>
    

      

  • 相关阅读:
    [iOS微博项目
    [iOS微博项目
    [iOS微博项目
    [iOS微博项目
    [iOS微博项目
    [iOS微博项目
    [iOS微博项目
    COS Javascript 上传图片putObject成功后没有返回ETag?
    模拟一个在线音乐播放程序(socket + 数据库)
    python 基础(while 循环、格式化输出、运算符、编码初识)
  • 原文地址:https://www.cnblogs.com/shcrk/p/9256308.html
Copyright © 2020-2023  润新知