zoukankan      html  css  js  c++  java
  • js的onload

    区别一:执行时间不同

    • window.onload()是在页面所有元素(包括图片,引用文件)加载完成后再执行。也就是说页面所有的东西都加载完成之后再加载。

    • $(document).ready()是DOM结构绘制完毕就执行,不必等到加载完毕,意思就是,DOM数加载完毕,不必等到页面中的图片或其他外部文件都加载完毕。所以$(document).ready()执行更快

    区别二:编写个数不同

    • window.onload()同时编写多个,在执行的时候,只会执行最后一个。也就是说只执行一次。
    • $(document).ready()编写多个,就执行多个

    区别三:有无简写

    • window.onload()没有简写的方式
    • $(document).ready()简写 $(function(){})
    <body>
        <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
        <li>7</li>
        <li>8</li>
        <li>9</li>
        <li>10</li>
        </ul>
     </body>
    <script>
    //只会执行最后一个
    window.onload = function(){
      console.log('window.onload加载1');
    }
    window.onload = function(){
      console.log('window.onload加载2');
    }
    window.onload = function(){
      console.log('window.onload加载3');
    }
    
    //全部都会执行
    $(document).ready(function(){
      console.log('$.ready加载1');
    })
    $(document).ready(function(){
      console.log('$.ready加载2');
    })
    $(document).ready(function(){
      console.log('$.ready加载3');
    })
    </script>
    

    image.png

    注意:

    1. 如果需要获取DOM绑定元素的属性值时,最好使用window.onload,因为他是在所有元素加载完毕才执行,如果使用$(document).ready,DOM已经加载,但是DOM绑定的元素属性没有加载,所以属性不生效。
    2. 要解决这个问题,可以使用 Jquery 中另一个关于页面加载的方法 ---load() 方法。
    3. Load() 方法会在元素的 onload 事件中绑定一个处理函数。如果处理函数绑定给 window 对象,则会在所有内容 ( 包括窗口、框架、对象和图像等 ) 加载完毕后触发,如果处理函数绑定在元素上,则会在元素的内容加载完毕后触发。
    //jQuery代码
    $(window).load(function(){
    
    })
    //等价于
    window.onload = function(){
    }
    

    当 onload 事件触发时,页面上所有的DOM,样式表,脚本,图片,flash都已经加载完成了。

    当 DOMContentLoaded 事件触发时,仅当DOM加载完成,不包括样式表,图片,flash。

    我们需要给一些元素的事件绑定处理函数。但问题是,如果那个元素还没有加载到页面上,但是绑定事件已经执行完了,是没有效果的。这两个事件大致就是用来避免这样一种情况,将绑定的函数放在这两个事件的回调中,保证能在页面的某些元素加载完毕之后再绑定事件的函数。

    当然DOMContentLoaded机制更加合理,因为我们可以容忍图片,flash延迟加载,却不可以容忍看见内容后页面不可交互。

    在没有出现DOMContentLoaded事件出现以前,许多类库中都有模拟这个事件的方法,比如jQuery中著名的 $(document).ready(function(){});


     

  • 相关阅读:
    静态库中的静态变量连接失败的解决
    (转)Virtual PC 2007虚拟网络设置
    (zt)iPhone Developer注册
    (zt)正则表达式30分钟入门教程
    (zt)Flex SDK 3.2和Flex Builder 3.0.2升级
    (转)完成端口之性能优化
    (摘)法拉利年代型号
    安装windows下的NDS开发环境
    [C#]小问题
    javascript "未结束字符串"
  • 原文地址:https://www.cnblogs.com/wjlbk/p/11783845.html
Copyright © 2011-2022 走看看