`
747017186
  • 浏览: 331361 次
社区版块
存档分类
最新评论

jquery ready function 与window.onload的区别(转)

 
阅读更多

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(function($) { });的几种表示方法

    **第五种:jQuery的`$(document).ready()`与`window.onload()`的区别** - `$(document).ready()`在DOM元素加载完毕后立即执行,不需要等待所有资源(如图片、CSS等)加载完成。 - 相比之下,`window.onload()`需要...

    2022Jquery总结(1).pdf

    2.4 jQuery 的入口函数与 js 入口函数的区别 jQuery 入口函数可以写多个,而 window.onload 不能写多个。执行时机不同:jQuery 入口函数要等待页面上 DOM 树加载完后执行,而 window.onload 要等待页面上所有的资源...

    jquery $(document).ready()和[removed]的区别浅析

    两者的用法在很多情况下非常相似,但它们之间也存在一些关键的区别,以下就是$(document).ready()和window.onload的区别浅析。 1. 执行时间上的区别 $(document).ready()方法仅需要DOM元素全部加载完成即可执行,这...

    解决chrome对jQuery的支持问题

    2. **使用jQuery的`$.load()`**:除了`$(document).ready()`,jQuery还提供了`$(window).load()`,它的行为类似于原生的`window.onload`,等待所有资源加载后再执行。 3. **使用`DOMContentLoaded`事件**:这是原生...

    jQuery中的ready函数与[removed]谁先执行

    本文将深入探讨jQuery中的`$(document).ready()`函数与`window.onload`事件的区别,并解析它们各自的执行时机。 首先,我们来看`$(document).ready()`,这是jQuery提供的一种方法,用于在文档对象模型(DOM)准备...

    Jqyery中同等与js中windows.onload的应用

    关于在页面中放置脚本,将DOM操作的代码放在 `window.onload` 或 jQuery 的 `document ready` 事件中,可以确保元素在执行相关操作时已经存在。例如,下面的代码绑定了按钮点击事件: ```html <div id="divInfo">...

    JQ ready()和onload的加载耗时

    `$(document).ready()`与`window.onload`的主要区别在于执行时机。`ready`更早,它允许更快地访问和操作DOM,提高用户体验。而`onload`则确保了所有资源加载完毕,适用于那些依赖所有资源的场景,如图片计数、页面...

    一张表格告诉你windows.onload()与$(document).ready()的区别

    - 如果你仍然需要在所有资源加载完成后执行某些操作,jQuery 提供了 `$(window).load(function() {...})`,这与 `window.onload` 相似,但提供了jQuery的链式操作和其他便利。 总结来说,选择 `window.onload()` ...

    JQuery的ready函数与JS的onload的区别详解

    JQuery的ready函数与JS的onload函数是JavaScript编程中常用的两种页面加载时机的事件处理方式。它们的用途是确保在操作DOM元素之前,页面的加载状态满足了某些条件。接下来,我们将详细分析这两种函数在执行时间、...

    JQuery基础、选择器.pdf

    **window.onload 与 $(document).ready 的区别** `window.onload` 事件会在整个页面(包括所有资源如图片、脚本等)完全加载后触发,而 `$(document).ready` 仅在DOM结构加载完成后触发,不等待其他资源。因此,`$...

    onload和jquery运行顺序

    window.onload = function () { console.log('window.onload 方式执行') } $(document).ready(function () { console.log('$(document).ready(function(){}) 方式执行') })

    15天学会jquery(完整版).pdf

    这解决了传统 `window.onload` 方法的延迟问题,因为 `$(document).ready()` 不需要等待所有资源(如图像)加载完毕。示例: ```javascript $(document).ready(function(){ alert("页面已准备好!"); }); ``` ...

    jquery的$(document).ready()和onload的加载顺序

    在JavaScript和jQuery的世界里,了解`$(document).ready()`和`window.onload`的加载顺序是非常重要的,尤其是在处理页面加载和交互效果时。这两个事件都与页面加载有关,但它们触发的时机有所不同,这也可能导致在...

    jquery 教程 详细解释了jquery的使用方法

    `$(document).ready()`与`window.onload()`的区别在于: a. 执行时机:`window.onload()`等待整个页面包括所有资源(如图片)完全加载后执行,而`$(document).ready()`仅在DOM结构构建完毕时触发,不考虑资源加载...

    实现在HTML页面加载完毕后运行js方法.docx

    有两种常见的方法可以实现这点,一种是使用 `window.onload` 事件,另一种是使用 jQuery 的 `$(document).ready()` 方法。 window.onload 事件 `window.onload` 事件是在页面中的所有元素都已经加载完毕后触发的,...

    JQuery自学第二天.docx

    原生JavaScript的入口函数,如`window.onload`或`document.DOMContentLoaded`,会在DOM元素及所有资源(如图片)加载完毕后执行,而JQuery的入口函数,如`$(document).ready()`,则只等待DOM元素加载完毕就开始执行...

    jQuery学习笔记.docx

    1. `$(document).ready(function(){...})`与`window.onload`的区别: - `$(document).ready()`会在DOM(文档对象模型)完全加载后立即执行,即使图片和其他资源尚未加载完毕。因此,它可以更早地运行脚本,提高了...

    jquery $(document).ready() 与[removed]的区别

    传统的JavaScript通过window.onload方法来实现此功能,而在jQuery中,则主要使用$(document).ready()方法。虽然这两个方法在功能上相似,都是确保在页面的HTML元素完全加载完毕后执行特定的JavaScript代码,但它们...

    JQuery基础、选择器.docx

    与 `window.onload` 相比,`$(document).ready` 更早触发,不等待所有资源(如图片)加载完毕。 **简单的jQuery示例** 以下是一个简单的jQuery示例,当用户点击按钮时,会弹出对话框: ```html <!DOCTYPE HTML> ...

    JQuery-- onload,ready方法详细解说

    JQuery onload、ready 方法详细解说 ...JQuery 的 onload 和 ready 方法都是在页面加载完成后触发的事件,但是它们之间有着一定的区别。在实际开发中,我们需要根据实际情况选择使用哪种事件,并注意其优点和缺点。

Global site tag (gtag.js) - Google Analytics