window.onload在js中很常用,但是有一个弊端,只会在完成内容时加载一次,如果同时使用两次window.onload,则后面的会覆盖前面的从而只实现一个函数。
为了解决这个问题可以这么做:
1、可以先创建一个匿名函数来容纳这两个函数,然后把那个匿名函数绑定到onload事件上,代码如下:
window.onload = function() {
firstFunction();
secondFunction();
}
当需要绑定的函数不是很多时,这应该是最简单的解决方案。
2、当你打算在页面加载完毕时执行多个函数,这里有个更好的解决方案,这个方案需要额外编写一些代码,但好处是一旦有了那些代码,把函数绑定到window.onload事件就非常容易了。
这个函数的名字是addLoadEvent,它是由Simon Willison编写的。它只有一个参数:打算在页面加载完毕时执行的函数的名字。
下面是addLoadEvent函数将要完成的操作。
- 把现有的window.onload事件处理函数的值存入变量oldonload。
- 如果在这个处理函数上还没有绑定任何函数,就像平时那样把新函数添加给它。
- 如果在这个处理函数上已经绑定了一些函数,就把新函数追加到现有指令的末尾。
addLoadEvent函数代码如下:
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
oldonload();
func();
}
}
}
这将把那些在页面加载完毕时执行的函数创建为一个队列。