window.onload与$(document).ready()

在我们编写javascript代码的时候,我们开始会这样写的:

window.onload = function (){
     //编写代码
}

我并不知道为什么会是这样写的,看着别人这样写我也就这样写。今天我就来简单的说说:谈到onload我们要讲HTML的执行顺序。HTML的执行顺序是至上到下的,除非你特别的说明,javascript不会等到等到页面加载加载完成后才执行的。

例如:网页中有这样的一行代码

<p id="name">My name is Aaron</p>

如果你在这行代码之前 加入如下javascript代码:

<script type="text/javascript">
      document.getElementById("name").innerHTML = "shangao";
</script>

运行该页面,用Firebug你可以看到这样的错误信息:

原因是当执行javascript代码的时候,页面上还没有id为name的Dom元素。

解决的方法有两种:

1.把javascript代码放在在HTML代码之后:

<p id="name">My name is Aaron.</p>
<script type="text/javascript">   document.getElementById("name").innerHTML="shangao";
</script>

2.等待网页加载完毕后,执行javascript代码。传统的方法就是我一开始说的使用window.onload,代码如下:

<script type="text/javascript">
        window.onload = function () {
            document.getElementById("name").innerHTML="shangao";
        }
    </script>
</head>
<body>
    <p id="name">My name is Aaron.</p>
</body>

还有可以使用jQuery来实现该功能的:

<script type="text/javascript">
        $(document).ready( function () {
            document.getElementById("name").innerHTML="shangao";
        });
    </script>
</head>
<body>
    <p id="name">My name is Aaron.</p>
</body>

在这我们就讲讲window.onload 和$(document).ready()的区别:

1.执行时间的不同:

window.onload 必须等到页面内容包括图片的所有元素加载完成后才能执行。

$(document).ready()是Dom结构绘制完毕后就执行,不必等到加载完毕。

代码演示如下:

    <script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
    <script type="text/javascript">
        window.onload = function () {
            alert("first");
        }
        $(document).ready(function(){
            alert("second");
        });
    </script>

我们会看到会先弹出带有"second"的弹出框,点击确定后,在弹出带有"first"的弹出框。

另外需要注意一点,由于在$(document).ready()方法内注册的事件,只要Dom结构就绪就会执行,因此可能此时元素的关联的文件尚未下载完。例如与图片有关的 html 下载完毕,并且已经解析为 DOM 树了,但很有可能图片还没有加载完毕,所以例如图片的高度和宽度这样的属性此时不一定有效。要解决这个问题,可以使用 Jquery 中另一个关于页面加载的方法 ---load() 方法。 Load() 方法会在元素的 onload 事件中绑定一个处理函数。如果处理函数绑定给 window 对象,则会在所有内容 ( 包括窗口、框架、对象和图像等 ) 加载完毕后触发,如果处理函数绑定在元素上,则会在元素的内容加载完毕后触发。

jquery 代码如下:
$(window).load(function(){
       // 编写代码
});
等价于javascript中的代码
window.onload = function(){
        // 编写代码
}

2.编写个数不同

window.onload 不能同时编写多个,如果有多个window.onload方法,只会执行一个。

$(document).ready()可以同时编写多个,并且都可以得到执行。

代码演示如下:

    <script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
    <script type="text/javascript">
        window.onload = function () {
            alert("first window.onload");
        }
        window.onload = function (){
            alert("second window.onload")
        }
        $(document).ready(function(){
            alert("first $(document).ready()");
        });
        $(document).ready(function(){
            alert("second $(document).ready()");
        });
    </script>

我们可以看到先后弹出了"first $(document).ready()"、"second $(document).ready()"、"second window.onload"三个弹出框。也是可以看出他们的执行时间是不同的。

3.简化写法:

window.onload 是没有简化写法的,$(document).ready(function(){}) ;可以简写成$(function(){});

window.onload与$(document).ready()

时间: 2024-10-05 05:08:14

window.onload与$(document).ready()的相关文章

JavaScript tips:window.onload与$(document).ready()的差异

1.window.onload在$(document).ready()之后执行 原因:二者触发与否,都是依据document.readyState这个属性. (1)document.readyState的值:uninitialized.loading.interactive.complete(这四个值,依据时间先后排序). (2)当其值为interactive时,会触发documentContentLoaded事件,JQuery.ready()就是对documentContentLoaded事件

window.onload与$(document).ready()的区别

<锋利的jQuery>上摘抄下来: window.onload $(document).ready() 执行时机 必须等待网页中所有的内容加载完毕后(包括图片)才能执行 网页中所有DOM结果绘制完毕后就执行,可能DOM元素关联的东西并没有加载完 编写个数 不能同时编写多个 以下代码无法正确执行:window.load = function() {  alert("test1"); }; window.load = function() {  alert("test

jquery学习笔记一之window.onload与$(document).ready()区别

1.window.onload与$(document).ready()区别 执行时机:前者必须等待网页中所有的内容加载完毕后(包括图片)才能执行,后者 网页中说有的Dom结构绘制完毕后就执行,可能Dom元素关联的内容并没有加载完成. <!DOCTYPE html> <html> <head> <title>test</title> <script type="text/javascript" src="js/j

window.onload()和$(document).ready()区别

1 $(window).load(function() { 2 $("#btn-upload").click(function(){ //比如说: 3 uploadPhotos(); 4 }); 5 }); window.onload()和$(document).ready()区别

浏览器加载模式:window.onload和$(document).ready()的区别(详解)

jQuery库文件是在body元素之前加载的,必须等待所有的DOM元素加载后,延迟支持DOM操作,否则就无法获取到. 在延迟等待加载,JavaScript提供了一个事件为load,方法如下: window.onload = function () {}; //JavaScript等待加载 $(document).ready(function () {}); //jQuery等待加载load和ready区别 window.onload $(document).ready() 执行时机 必须等待网页

window.onload和document.ready的区别

window.onload和document.ready虽然两个方法的运行效果都一样,但他们之间是存在着区别的: 一.从执行的时间 window.onload在dom文档结构加载完毕以后就可以执行,不必等到页面中的其他文件(例如图片等文件)都加载完毕. 而document.ready则是必须要等到dom文档结构和其他包括图片在内放入所有文件全部加载成功后才可以执行 二.编写个数,被执行的次数不同 window.onload不能通知书编写多个,就算写了多个,也只能执行一个: document.re

window.onload和document.ready区别

1.执行时间 window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行.         $(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕. 2.编写个数不同 window.onload不能同时编写多个,如果有多个window.onload方法,只会执行一个          $(document).ready()可以同时编写多个,并且都可以得到执行 3.简化写法 window.onload没有简化写法          $(documen

【前端】window.onload 和 $(document).ready() 的区别

... 在Stack Overflow上看到了这个问题,自己翻译了过来. The onload event is a standard event in the DOM, while the ready event is specific to jQuery. window.onload 是DOM中的标准事件,而$(document).ready() 是jQuery中的事件. The ready event occurs after the HTML document has been load

window.onload()和$(document).ready()方法异同

window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行. $(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕. window.onload不能同时编写多个,如果有多个window.onload方法,只会执行一个 $(document).ready()可以同时编写多个,并且都可以得到执行 window.onload没有简化写法 $(document).ready(function(){})可以简写成$(function(){}); 需要注意一