window的load事件理解

网页中的某些JavaScript脚本代码往往需要在文档加载完成后才能够去执行,否则可能导致无法获取对象的情况,为了避免类似情况的发生,可以使用以下两种方式:

(1).将脚本代码放在网页的底端,运行脚本代码的时候,可以确保要操作的对象已经加载完成。

(2).通过window.onload来执行脚本代码。

举个栗子:

浏览器看下:

div#bg的颜色未设置成功,说明script标签中的代码在div#bg渲染前执行了,没有找到div对象,所以控制台打印null

使用load事件修改代码:

浏览器显示正常了:

关于window.onload事件处理函数绑定:

window.onload事件默认只执行最后一次绑定的函数,例如

window.onload = funcA;

window.onload = funcB;

那么当window加载完成后,只会执行funcB

如果想在window加载完毕后执行多个函数,可以自己封装一个函数

可以在js文件中添加该函数,例如addLoadEvent(test1);addLoadEvent(test2),当窗口加载完成后,会先后执行test1、test2

使用Jquery的时候,也可以在窗口加载完成后执行多个函数

两个函数都会在window加载完成后执行

比较window.onload和$(document).ready()

window.onload必须等待网页中所有内容加载完毕后(包括图片)才能执行

$(document).ready()在网页所有DOM结构绘制完毕后就执行,可能DOM元素关联的东西并没有加载完,但网页的所有元素对jQuery是可以访问的,等价于DOMContentLoaded

$(document).load()

需要注意一点,使用$(document).ready()方法注册的事件,由于元素关联的文件可能未下载完,比如与图片有关的HTML下载完毕,但是图片还未加载完,此时访问图片的高度和宽度这样的属性不一定有效,

所以可以使用$(document).load()方法,如果处理函数绑定给window对象,则会在(窗口、框架、对象、图片等)加载完毕后触发,如果绑定在元素上,则会在元素内容加载完毕后触发,等价 于Javascript中

的window.onload = function(){}

猜你喜欢

转载自blog.csdn.net/liu_jun_tao/article/details/81199125