网页中的某些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(){}