jquery $(document).ready() 与window.onload的区别(转自网络)

Jquery中$(document).ready()的作用类似于传统JavaScript中的window.onload方法,不过与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()是如何实现的吧:

复制代码 代码如下:

  1. if ( jQuery.browser.msie && window == top ) (function(){   
  2. if (jQuery.isReady) return;   
  3. try {   
  4. document.documentElement.doScroll("left");   
  5. } catch( error ) {   
  6.       setTimeout( arguments.callee, 0 );   
  7.        return;   
  8.     }   
  9.    // and execute any waiting functions   
  10.    jQuery.ready();   
  11. })();   
  12. jQuery.event.add( window, "load", jQuery.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绑定的方法执行之后才轮到。而这个页面中正好在测试环境下有一个访问不到的资源,那十几秒的延迟正是它放大出的时间差。

S32K144之芯片锁死解锁——关闭debug端口 S32K144之芯片锁死及解锁 经常捣鼓单片机就会发现,时常会因为某些操作不当导致芯片锁死情况的发生,通过Jlink我们可以读到芯片的ID,但是无法进行Debug,这很是让人苦恼。 基于S32K144的芯片锁死,一般有如下几种可能: 1、时钟配置异常,过高的配置时钟频率以及不配置时钟,都有可能造成芯片保护锁死,我就曾经因为不注意把时钟配置代码注释掉,导致芯片锁死。 2、我是微软雅黑烧写断电,如果在... 阅读详情

相关推荐

配电变压器测控终端装置设计

配电变压器测控终端装置在电网运行中承担着数据采集、状态监测、故障预警及远程控制的关键任务,其性能直接关系到配电系统的安全性与可靠性。本研究围绕测控终端的硬件电路、软件算法、通信系统及系统优化展开深入分析,并基于实验测试验证系统性能。硬件设计包括模拟量输入电路、电压电流信号变换电路、A/D转换电路、控制与通信电路及系统电源电路,确保信号采集的高精度与系统的稳定性。软件部分涵盖系统控制程序、数据采集与处理程序、通信程序及显示与控制程序,实现数据的实时处理与传输。通信模块结合RS-485、CAN总线及以太网技术,

weixin_44553616的博客 1102

JavaScript的window.onload事件的理解

window.onload()的作用 window.onload() 方法用于在网页加载完毕后立刻执行的操作,即当 HTML 文档加载完毕后,立刻执行某个方法。 window.onload() 通常用于 元素,在页面完全载入后(包括图片、css文件等等)执行脚本代码。 只有一个要执行的函数语法: window.onload = funcRef; 在页面加载完成后 funcRef 方法会被调用。 有多个要执行的函数语法: window.οnlοad=function(){ Func1(); Fun

zhansan的博客 3万+

学习STM32的流体水位传感器

引言: 流体水位传感器是一种常用于测量液体水位的设备,广泛应用于水位监测、液位控制和流量计量等领域。STM32是一款功能强大的单片机,具有丰富的外设和灵活的编程能力,非常适合用于流体水位传感器的开发。本文将介绍如何使用STM32开发板与流体水位传感器进行连接和通信,并通过编写代码实现水位的测量和显示。五、总结: 通过以上的代码示例,我们可以实现使用STM32开发板与流体水位传感器进行连接和通信的功能。三、编写代码: 以下是使用STM32CubeIDE编写的示例代码,实现了读取流体水位传感器的功能。

xiaoalla的博客 740

关于JS的--window.onload()方法

一、window.onload()方法: 该方法用于在网页加载完毕后立刻执行的操作,即当html加载完毕后,立刻执行某个方法等。 二、为什么使用window.onload()? 因为JS中的函数方法等需要在HTML文档渲染完成才可以使用,如果没有渲染完成,此时的DOM树是不完整的,这样JS文件就可能报出"undefined"错误。 三、常见的用法: 简单的立刻执行函数,假

冯小东 2万+

Sony微单相机alpha6000 wifi远程控制(1)

引言 Sony’s Camera Remote API beta SDK allows you to control a number of Sony cameras, including Sony Action cams, Sony Alpha cameras and Lens Style cameras, wirelessly from another device. 索尼于2017年三月Re...

markfuk996的博客 4965

适合初学者的ROS机器人教程(1): Ubuntu下ROS创建自己的包和使用github下载的包

ROS如何创建自己的包 1. 首先创建catkin工作空间(如果你以及有了请忽略) $ mkdir catkin_ws # 创建一个文件夹里面计划放我们的项目,ws是workspace的缩写 $ cd catkin_ws # 将当前工作文件夹切换到catkin_ws这个文件夹 ~/catkin_ws$ catkin_make # 执行catkin_make创建一ROS项目 此时你的catkin_...

@司南牧|知乎|博客|易懂教程|李韬 3244

window.onload用法详解

网页中的javaScript脚本代码往往需要在文档加载完成后才能够去执行,否则可能导致无法获取对象的情况,为了避免这种情况的发生,可以使用以下两种方式:一.将脚本代码放在网页的底端,这样在运行脚本代码的时候,可以确保要操作的对象已经加载完成。二.通过window.onload来执行脚本代码。第一种方式感觉比较凌乱(其实推荐使用),往往我们需要将脚本代码放在一个更为合适的地方,...

weixin_33835690的博客 1668

【学习记录】IIC驱动ICM42670+卡尔曼滤波+四元数姿态角解算

ICM42670陀螺仪可以使用iic驱动,单片机平台使用GD32f305VE。

liarsup的博客 8265

JavaScript学习之BOM(BOM,Windows事件,JavaScript执行机制)

前端校招精编面试解析大全点击这里即可获取完整版pdf查看入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**[外链图片转存中…(img-NPvTO2bn-1711674961953)]由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!如果你觉得这些内容对你有帮助,可以扫码获取!!(资料价值较高,非无偿)前端校招精编面试解析大全点击这里即可获取完整版pdf查看。

2401_83817689的博客 1903

linux下autocad完美替代品bricscad的安装运行

前言 在Linux平台下,能完美兼容.dwg文件的软件并不多。 虽然国产的中望和浩辰为适配uos操作系统,近期都推出了linux版本,但目前好像还没有对应的破姐流出。(如果有的话请私信我或留下评论) 然而有了这一款源自比利时的软件——bricscad,linux下查看和编辑.dwg文件再也不是噩梦了! 安装pj 资源链接:https://pan.baidu.com/s/1dC7zarlqwuO5fa4CBL_KGQ 提取码:24j6 1.下载对应的压缩包,解压并安装其中对应的deb或rpm软件包。 2.在C

weixin_35259117的博客 4482

AutoSAR实验视频讲解:相关资料下载

AutoSAR实验视频讲解:闪烁一颗LED实验【相关资料下载】 总目录 为了方便大家自己的实验顺利进行,这里我们准备了一些实验中可能用到的资料供大家使用 介绍 这里主要是三个文件: MyApp_Core.0是我们的用户代码,在工程集成那集将会讲解 McalConfig.arxml就是我们的Mcal导出文件,用于导入到DaVinci中生成代码 CAN.dbc文件是我们的通信矩阵文件 以上几个文件都是简单的配置,不具有实际项目的实用性,大家仅供参考 // 顺便吐槽一句:百度网盘的吃相真的难看 下载连接

雪云飞星的博客 6668

JavaScript--window.onload和jq的$(document).ready()

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

weixin_45406850的博客 1574

以阿克曼转向车为例对URDF和XACRO文件进行解读

   最近我在古月学院购买了在Gazebo中实现阿克曼转向车的仿真课程,课程资料的阿克曼小车的XACRO文件在Gazebo里加载的时候报了三个错误,在这之前,我没接触过URDF或XACRO文件,本篇文章就以这个阿克曼小车的XACRO文件为例,对URDF或XACRO文件的格式和内容进行解读,期望经过解读和学习,找到错误原因及所在,并解决这三个错误    先来放一下上面右图所示的模型的完整的XACRO文件: <?xml version="1.0"?> <!-- racecar.urdf.x

慕羽★的博客 3700

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

Jquery中$(document).ready()的作用类似于传统JavaScript中的window.onload方法,不过与window.onload方法还是有区别的。 1.执行时间 window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行。 $(document).ready()是DOM结构绘制完毕后就执行,不必等...

amkokq884222的博客 76

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

onload和ready的不同

在常规的JavaScript代码中,通常使用window.onload( )方法,而在jQuery中,使用的是$(document).ready( )方法。 $(document).ready( )方法和window.onload( )方法有相似的功能,但是在执行时机方面是有区别的。window.onload( )方法是在网页中所有的元素(包括元素的关联文件)完全加载到浏览器后才执行,即JavaScript此时才可以访问网页中的任何元素。而通过jQuery中的$(document).ready()方法注册的

许小乖……是总攻 1621

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

window.onload()函数和jQuery中的document.ready()有什么区别?,什么是CDN?哪些是流行的jQuery CDN?使用CDN有什么好处?

1.window.onload()函数和jQuery中的document.ready()有什么区别? a、执行时间:window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行。(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕。(document).ready()是DOM结构绘制 完毕后就执行,不必等到加载完毕。(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕。(document).ready()在 window.

qq_44374239的博客 368

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

7. window.onload与document.ready的区别

区别: window.onload与 $(document).ready() * window.onload * 包括页面的图片加载完后才会回调(晚) * 只能有一个监听回调,多次设置为赋值操作,只输出最后那个 * $(function(){}) * 全称:$(document).ready() * 页面加载完就回调(早) * 可以有多个监听回调,输出多个 <body> <h1>测试window.onload与$(doc...

lazylYYY的博客 195

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

最早接触的时候也说$(document).ready(function(){   })这个函数是用来取代页面中的window.onload;但是今天发现 好像不是这样回事!是在做一个页面载入效果时发现的!function winready(){document.getElementById("loading").style.display="none";}window.on

Now . Or Never `` 548

$(document).ready、body.Onload()和 $(window).load的区别

window.load(function(){...})和body.onload()都存在同样一个问题, 那都是在页面所有元素(包括html标签以及引用到得所有图片,Flash等媒体)加载完毕后执行的, 这是它们的共同点.$(document).ready()是文档结构已经加载完成 (不包含图片等非文字媒体文件),不必等到所有的加载完毕。 $(window)

tony19890820的专栏 1077

java window.onload_[Java教程]浏览器加载模式:window.onload和$(document).ready()的区别(详解)...

[Java教程]浏览器加载模式:window.onload和$(document).ready()的区别(详解)02014-08-15 18:01:20jQuery库文件是在body元素之前加载的,必须等待所有的DOM元素加载后,延迟支持DOM操作,否则就无法获取到。在延迟等待加载,JavaScript提供了一个事件为load,方法如下:window.onload = function () {}...

weixin_39767983的博客 206

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

jquery中的$(document).ready()与window.onload的区别 最早接触的时候也说$(document).ready(function(){   })这个函数是用来取代页面中的window.onload;但是今天发现 好像不是这样回事!是在做一个页面载入效果时发现的!function winready(){document.getElementById...

zhang2008xiang2的博客 135

JQuery学习之--2、window.onload与$(document).ready()的对比

1,传统的window.onload      a, 执行的时机:必须等待网页中所有的内容加载完毕后(包括图片,图片最耗费网络资源。才能执行).      b,编写的个数:不能同时编写多个加载事件,否则,只会加载最后一个onload事件。      c,简化的写法:没有。 2,,jQuery中的$(document).ready()       a,执行的时机:网页中所有DOM结

左岸人的博客 471

jQuery学习笔记之$(document).ready()

$(documnet).ready(function(){ //等待DOM元素加载完毕 alert("hello"); });类似传统Javascript中的window.onload方法 – window.onload $(document).ready() 执行时机 必须等待网页中所有内容加载完毕(包括图片)才执行 网页中所有DOM结构绘制完毕后就执行,可能DOM元

我是希希呀的博客 441

jquery项目源码_第一个jQuery程序

1.配置jQuery环境1.1获取jQuery最新版本进入jQuery的官方网址 http://jquery.com ,下载最新的jQuery库。1.2 jQuery库类型说明目前jQuery库分为三个大版本:jquery-1.x版本,兼容IE678,使用最为广泛的,官方只做BUG维护,功能不再新增。一般项目来说,使用1.x版本就可以了,例如:jquery-1.11.3。jquery-2.x版本,...

weixin_33631836的博客 1330

jQuery的$(document).ready(function(){ })的疑惑的解答

[code="js"] 最早接触的时候也说$(document).ready(function(){ })这个函数是用来取代页面中的window.onload; 但是今天发现 好像不是这样回事!是在做一个页面载入效果时发现的! function winready(){document.getElementById("loading").style.display="none";}...

张玉龙 509
上一篇: 常用的几种请求后台的方法
下一篇: Totast的几种用法(转自网路)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值