1.执行时间
window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行。
$(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕。
2.编写个数不同
window.onload不能同时编写多个,如果有多个window.onload方法,只会执行一个
$(document).ready()可以同时编写多个,并且都可以得到执行
3.简化写法
window.onload没有简化写法
$(document).ready(function(){})可以简写成$(function(){});
以 浏览器装载文档为例,在页面加载完毕后,浏览器会通过 Javascript 为 DOM 元素添加事件。在常规的 Javascript 代码中,通常使用 window.onload 方法,而在 Jquery 中,使用的是 $(document).ready() 方法。 $(document).ready() 方法是事件模块中最重要一个函数,可以极大的提高 Web 应用程序的速度。
window.load $(document).ready()
执行时机 必须等待网页中所有的内容加载完毕后 ( 包括图片 ) 才能执行 网页中所有 DOM 结构绘制完毕后就执行,可以能 DOM 元素关联的内容并没有加载完
编写个数 不能同时编写多个
以下代码无法正确执行:
window.onload = function(){
alert(“text1”);
};
window.onload = function(){
alert(“text2”);
};
结果只输出第二个 能同时编写多个
以下代码正确执行:
$(document).ready(function(){
alert(“Hello World”);
});
$(document).ready(function(){
alert(“Hello again”);
});
结果两次都输出
简化写法 无 $(function(){
// do something
});
另外,需要注意一点,由于在 $(document).ready() 方法内注册的事件,只要 DOM 就绪就会被执行,因此可能此时元素的关联文件未下载完。例如与图片有关的 html 下载完毕,并且已经解析为 DOM 树了,但很有可能图片还没有加载完毕,所以例如图片的高度和宽度这样的属性此时不一定有效。要解决这个问题,可以使用 Jquery 中另一个关于页面加载的方法 ---load() 方法。 Load() 方法会在元素的 onload 事件中绑定一个处理函数。如果处理函数绑定给 window 对象,则会在所有内容 ( 包括窗口、框架、对象和图像等 ) 加载完毕后触发,如果处理函数绑定在元素上,则会在元素的内容加载完毕后触发。
Jquery 代码如下:
$(window).load(function (){
// 编写代码
});等价于 JavaScript 中的以下代码
Window.onload = function (){
// 编写代码
}
——————————————————————————————
最近在改一个嵌入在frame中的页面的时候,使用了jquery做效果,而页面本身也绑定了onload事件。改完后,Firefox下测试正常流畅,IE下就要等个十几秒jquery的效果才出现,黄花菜都凉了。
起初以为是和本身onload加载的方法冲突。网上普遍的说法是$(document).ready()是在页面DOM解析完成后执行,而onload事件是在所有资源都准备完成之后才执行,也就是说$(document).ready()是要在onload之前执行的,尤其当页面图片较大较多的时候,这个时间差可能更大。可是我这页面分明是图片都显示出来十几秒了,还不见jquery的效果出来。
删了onload加载的方法试试,结果还是一样,看来没有必要把原本的onload事件绑定也改用$(document).ready()来写。那是什么原因使得Firefox正常而IE就能呢?接着调试,发现IE下原来绑定的onload方法竟然先于$(document).ready()的内容执行,而Firefox则是先执行$(document).ready()的内容,再执行原来的onload方法。这个和网上的说法似乎不完全一致啊,呵呵,有点意思,好像越来越接近真相了。
翻翻jquery的源码看看$(document).ready()是如何实现的吧:
复制代码 代码如下:
if ( jQuery.browser.msie && window == top ) (function(){
if (jQuery.isReady) return;
try {
document.documentElement.doScroll("left");
} catch( error ) {
setTimeout( arguments.callee, 0 );
return;
}
// and execute any waiting functions
jQuery.ready();
})();
jQuery.event.add( window, "load", jQuery.ready );
结果很明了了,IE只有在页面不是嵌入frame中的情况下才和Firefox等一样,先执行$(document).ready()的内容,再执行原来的onload方法。对于嵌入frame中的页面,也只是绑定在load事件上执行,所以自然是在原来的onload绑定的方法执行之后才轮到。而这个页面中正好在测试环境下有一个访问不到的资源,那十几秒的延迟正是它放大出的时间差。
相关推荐
**第五种:jQuery的`$(document).ready()`与`window.onload()`的区别** - `$(document).ready()`在DOM元素加载完毕后立即执行,不需要等待所有资源(如图片、CSS等)加载完成。 - 相比之下,`window.onload()`需要...
2.4 jQuery 的入口函数与 js 入口函数的区别 jQuery 入口函数可以写多个,而 window.onload 不能写多个。执行时机不同:jQuery 入口函数要等待页面上 DOM 树加载完后执行,而 window.onload 要等待页面上所有的资源...
两者的用法在很多情况下非常相似,但它们之间也存在一些关键的区别,以下就是$(document).ready()和window.onload的区别浅析。 1. 执行时间上的区别 $(document).ready()方法仅需要DOM元素全部加载完成即可执行,这...
2. **使用jQuery的`$.load()`**:除了`$(document).ready()`,jQuery还提供了`$(window).load()`,它的行为类似于原生的`window.onload`,等待所有资源加载后再执行。 3. **使用`DOMContentLoaded`事件**:这是原生...
本文将深入探讨jQuery中的`$(document).ready()`函数与`window.onload`事件的区别,并解析它们各自的执行时机。 首先,我们来看`$(document).ready()`,这是jQuery提供的一种方法,用于在文档对象模型(DOM)准备...
关于在页面中放置脚本,将DOM操作的代码放在 `window.onload` 或 jQuery 的 `document ready` 事件中,可以确保元素在执行相关操作时已经存在。例如,下面的代码绑定了按钮点击事件: ```html <div id="divInfo">...
`$(document).ready()`与`window.onload`的主要区别在于执行时机。`ready`更早,它允许更快地访问和操作DOM,提高用户体验。而`onload`则确保了所有资源加载完毕,适用于那些依赖所有资源的场景,如图片计数、页面...
- 如果你仍然需要在所有资源加载完成后执行某些操作,jQuery 提供了 `$(window).load(function() {...})`,这与 `window.onload` 相似,但提供了jQuery的链式操作和其他便利。 总结来说,选择 `window.onload()` ...
JQuery的ready函数与JS的onload函数是JavaScript编程中常用的两种页面加载时机的事件处理方式。它们的用途是确保在操作DOM元素之前,页面的加载状态满足了某些条件。接下来,我们将详细分析这两种函数在执行时间、...
**window.onload 与 $(document).ready 的区别** `window.onload` 事件会在整个页面(包括所有资源如图片、脚本等)完全加载后触发,而 `$(document).ready` 仅在DOM结构加载完成后触发,不等待其他资源。因此,`$...
window.onload = function () { console.log('window.onload 方式执行') } $(document).ready(function () { console.log('$(document).ready(function(){}) 方式执行') })
这解决了传统 `window.onload` 方法的延迟问题,因为 `$(document).ready()` 不需要等待所有资源(如图像)加载完毕。示例: ```javascript $(document).ready(function(){ alert("页面已准备好!"); }); ``` ...
在JavaScript和jQuery的世界里,了解`$(document).ready()`和`window.onload`的加载顺序是非常重要的,尤其是在处理页面加载和交互效果时。这两个事件都与页面加载有关,但它们触发的时机有所不同,这也可能导致在...
`$(document).ready()`与`window.onload()`的区别在于: a. 执行时机:`window.onload()`等待整个页面包括所有资源(如图片)完全加载后执行,而`$(document).ready()`仅在DOM结构构建完毕时触发,不考虑资源加载...
有两种常见的方法可以实现这点,一种是使用 `window.onload` 事件,另一种是使用 jQuery 的 `$(document).ready()` 方法。 window.onload 事件 `window.onload` 事件是在页面中的所有元素都已经加载完毕后触发的,...
原生JavaScript的入口函数,如`window.onload`或`document.DOMContentLoaded`,会在DOM元素及所有资源(如图片)加载完毕后执行,而JQuery的入口函数,如`$(document).ready()`,则只等待DOM元素加载完毕就开始执行...
1. `$(document).ready(function(){...})`与`window.onload`的区别: - `$(document).ready()`会在DOM(文档对象模型)完全加载后立即执行,即使图片和其他资源尚未加载完毕。因此,它可以更早地运行脚本,提高了...
传统的JavaScript通过window.onload方法来实现此功能,而在jQuery中,则主要使用$(document).ready()方法。虽然这两个方法在功能上相似,都是确保在页面的HTML元素完全加载完毕后执行特定的JavaScript代码,但它们...
与 `window.onload` 相比,`$(document).ready` 更早触发,不等待所有资源(如图片)加载完毕。 **简单的jQuery示例** 以下是一个简单的jQuery示例,当用户点击按钮时,会弹出对话框: ```html <!DOCTYPE HTML> ...
JQuery onload、ready 方法详细解说 ...JQuery 的 onload 和 ready 方法都是在页面加载完成后触发的事件,但是它们之间有着一定的区别。在实际开发中,我们需要根据实际情况选择使用哪种事件,并注意其优点和缺点。