1、window.onload函数是传统javascript自带的方法,该方法必须等待网页中所有内容[包括图片]加载完毕后才能执行;其在页面中不能同时编写多个.
2、$(document).ready()函数是jquery提供的文档就绪函数,等待网页中的所有dom元素解析完毕之后执行;可能dom元素关联的其他东西并没有加载完成。
说明:例如某大型图库网站要为所有的图片添加行为事件(例如:点击隐藏或显示);如果使用window.onload方法来实现,则必须等该网页每一幅图片全部加载完毕后才可以进行操作;若是采用jquery的$(document).ready()来实现,则只需要等待dom解析就绪就可以对其进行操作,不需要等待所有图片都下载完毕。(显然解析网页为dom树的速度比等待网页加载所有关联文件下载完毕的速度要快的多)
问题一: 在$(document).ready()方法内注册事件时,只要dom解析完毕就会执行;如果出现与图片有关的html下载完毕,并且解析为dom树了,但是图片还未加载完毕;此时图片的宽度和高度属性此时不一定有效,此时可以使用jquery的load()方法来解决。关于load()方法执行是在元素的onload事件中添加一个处理函数,如果处理函数绑定给window,则会在所欲的内容[窗口、框架、对象和图像]加载完毕后触发,若只作用在某个元素上,则会在该元素加载完毕后触发。【$(window).load(function(){})等价于window.onload = function(){}】
问题二:window.onload 事件一次只能保存对一个函数的引用;若重复实现该事件,后面的函数引用将覆盖前面的函数;而jquery提供的$(document).ready()函数在每次调用该方法时都会在现有的行为上追加新的行为,这些行为函数会根据注册的顺序依次执行。
例如:
function one(){alert("one")};
function two(){alert("two")};
window.onload = one;
window.onload = two;
输出结果:two 【因为后面的two函数覆盖了前面one函数,而是用$(document).ready()则不会出现该情况.】
如对本文有疑问, 点击进行留言回复!!
【JavaScript笔记(一)】万丈高楼平地起 - 基本概念篇
轻松解决 org.apache.taglibs.standard.tlv.JstlCoreTLV 困惑
vert实践五——Json?Protocol Buffer?FlatBuffers?
[基于tensorflow的人脸检测] 基于神经网络的人脸检测8——验证训练好的神经网络
网友评论