假设我们有两个函数:firstFunction和secondFunction,如果想让它们俩都在页面加载时得到执行,我们该怎么办?如果把他们逐一绑定到
onload事件上,它们当中将只有最后那个才会被实际执行:
这里有一个弹性最佳方案:
1.把现有的window.onload事件处理函数的值存入变量oldonload
2.把在这个处理函数上还没有绑定任何函数,就像平时那样把新函数添加给它
3.如果在这个处理函数上已经绑定了一些函数,就把新函数追加到现有指令的末尾。
这就把那些在页面加载完毕时执行的函数创建为一个队列。如果想把刚才那两个函数添加到这个队列里去,只需写出以下代码就行了:
addLoadEvent(firstFunction);
addLoadEvent(secondFunction);
这个函数非常实用,尤其是在代码变得越来越复杂的时候。无论打算在页面加载完毕时执行多少个函数,只要多写一条语句就可以安排好一切了
window.οnlοad=firstFunction
window.οnlοad=secondFunction
secondFunction函数将取代firstFunction。你可能会想:每个事件处理函数只能绑定一条指令。
有一种办法可以让我避过这一难题:可以先创建一个匿名函数来容纳这两个函数,然后把这个匿名函数绑定到onload事件上,如下所示:
window.οnlοad=function(){
firstFunction();
secondFunction();
}
它确实能很好的工作--在需要绑定的函数不是很多的场合,这应该是最简单的解决方案。这里有一个弹性最佳方案:
function addLoadEvent(func){
var oldload=window.onload;
if(typeof window.onload!='function'){
window.οnlοad=func;
}
else{
window.οnlοad=function(){
oldonload();
func();
}
}
}
下面是addLoadEvent函数,将要完成的操作。1.把现有的window.onload事件处理函数的值存入变量oldonload
2.把在这个处理函数上还没有绑定任何函数,就像平时那样把新函数添加给它
3.如果在这个处理函数上已经绑定了一些函数,就把新函数追加到现有指令的末尾。
这就把那些在页面加载完毕时执行的函数创建为一个队列。如果想把刚才那两个函数添加到这个队列里去,只需写出以下代码就行了:
addLoadEvent(firstFunction);
addLoadEvent(secondFunction);
这个函数非常实用,尤其是在代码变得越来越复杂的时候。无论打算在页面加载完毕时执行多少个函数,只要多写一条语句就可以安排好一切了