在编写JavaScript代码时,有时候我们需要一些函数在网页加载完毕之后立即执行。网页加载完毕会触发一个onload事件,这个事件与window对象相关联,我们可以这样做:
在代码越来越复杂时,这个函数能起到事半功倍的效果。
window.onload = function
这样解决了我们的问题。那么问题来了:如果我有两个函数,都想让它们在页面加载时得到执行,怎么办?如果把它们逐一绑定到onload事件上,只有最后 那个才会被实际执行:
window.onload = firstFunction;
window.onload = secondFunction;
secondFunciton将取代firstFunction。你会想:每个事件处理函数只能绑定一条指令。
有一种办法可以避过这一难题:先创建一个匿名函数,然后将此匿名函数绑定到onload事件上,如下:
window.onload = function()
{
firstFunction();
secondFunction();
}
在需要绑定的函数不是很多时,它确实是最简单的解决方法。
下面是另一种解决方法,有了这个,不管你打算在页面加载完毕时执行多少函数,都可以应对自如。
这个函数的名字是addLoadEvent,是由Simom Willison编写的:
1.把现有的window.load事件处理函数的值存入变量oldonload。
2.若在这个处理函数上还未绑定任何函数,就像平时那样把新函数添加给它。
3.若已绑定了一些函数,就把新函数追加到现有指令的末尾。
下面是代码:
function addLoadEvent(func)
{
var oldonload = window.onload;
if(typeof window.onload != 'function')
window.onload = func;
else{
window.onload = function(){
oldonload();
func();
}
}
}
这将把那些在页面加载完毕执行的函数创建一个为一个队列。如果想把刚才那两个函数加入这个队列里,只需如此:
addLoadEvent(firstFunction);
addLoadEvent(secondFunction);
在代码越来越复杂时,这个函数能起到事半功倍的效果。