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

来源:互联网 发布:淘宝企业店铺申请资料 编辑:程序博客网 时间:2024/04/29 21:56

1.执行时机

$(document).ready()方法和window.onload方法功能相似的功能,但是在执行时机方面是有区别的。window.onload方法是在网页中的所有元素完全加载到浏览器后才执行,即javascript此时才可以访问网页中的任何元素。而通过$(docuement).ready()方法注册的时间处理程序,在DOM完全就绪时就可以被调用。此时,网页中的所有元素对jQuery而言都是可以访问的,但是这并不意味这这些元素关联的文件都已经下载完毕。

举一个例子,有一个大型的图库网站,为网页中所有的图片添加某些行为,例如单击图片后让它隐藏或显示。如果使用window.onload方法来处理,那么用户必须等到每一幅图片都加载完毕后,才可以进行操作。如果使用jQuery中的$(document).ready()方法来进行设置,只要DOM就绪就可以操作了,不需要等待所有的图片下载完毕。很显然,把网页解析为DOM树的速度比把网页中的所有关联文件加载完毕的速度快得多。由于在$(document).ready()方法内注册的时间只要DOM就绪就会被执行,因此可能此时元素的关联文件未下载完。例如与图片有关的html下载完毕并已经解析为DOM树了,但很有可能图片还未加载完毕,例如图片的高度和宽度这样的属性此时不一定有效。要解决这个问题,可以使用jQuery中领域各关于页面加载的方法----load()方法。load()方法会在元素的onload事件中绑定一个处理函数。如果处理函数绑定给window对象,则会在所有的内容加载完毕后触发,如果处理函数绑定在元素上,则会在元素的内容加载完毕后触发。

2.多次使用

JavaScript中的onload事件一次只能保存对一个函数的引用,他会自动用后面的函数覆盖前面的函数,因此不能再现有的行为上添加新的行为。为了达到两个函数顺序触发的效果,只能在创建一个JavaScript方法来实现,但是这还是不能满足某些需求,例如有多个Javascript文件,每个文件都需要用到window.onload方法,这种情况下用上面提到的方法编写代码会非常麻烦,jquery中的$(document).ready()方法能够很好的处理这些情况,每次调用的$(document).ready()方法都会在现有的行为上追加新的行为,这些行为会根据注册的顺序依次执行。

0 0
原创粉丝点击