有一个函数 functionA
,我们想让它再网页加载完毕之后立刻执行,可以用
window.onload = functionA;
这样是可以的,但是如果想让网页加载完毕之后执行两个函数.
window.onload = functionA;
window.onload = functionB;
但是很遗憾这样做并不行,结果浏览器只会执行 funcitonB
解决方法
可以先创建一个匿名函数来容纳这两个函数,然后把这个匿名函数绑定的onload
事件上
window.onload = function() {
functionA();
functionB();
}
事实上确实解决了问题。但是如果想加载多个函数呢?一个一个绑定是很麻烦的。
最佳解决方案
创建一个 addLoadEvent
函数。这个函数的功能
- 把现有的
window.onload
事件处理函数的值存入变量oldonload
- 如果在这个处理函数上还没有绑定任何函数,就像平时那样把新函数添加给它。
- 如果在这个处理函数上已经绑定了一些函数,就把新函数追加到现有指令的末尾。
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != "function") {
oldonload = func;
} else {
window.onload = function() {
oldonload();
func();
}
}
}