网页加载时共享onload事件

一个网页加载完成后立即执行一个javascript脚本事件,可以采用window.onload。

例如: 

window.onload=firstfunction;

但是如果要同时加载两个或两个以上的函数,如果采用下列方法:

window.onload=firstfunction;
window.onload=secondfunction;

结果浏览器只执行后一条,即secondfunction,也就是后面覆盖了前面的,看得出window.onload一次只能执行一个函数。

有一种方法是创建一个函数来容纳这连个函数或更多的。

例如:

window.onload=function(){
  firstfunction();
  secondfunction();
}

这是最简单的解决方案,在需要绑定的函数不是很多的场合,但这不是最佳解决方案。

下面有个弹性最佳的解决方案——不论在页面加载完要执行多少个函数都应用自如:

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);


下面给出一个完整的例子:

//共享onload事件
function addLoadEvent(func){
    var oldonload=window.onload;
    if(typeof window.onload!='function'){
        window.onload=func;    
    }else{
        window.onload=function(){
            oldonload();
            func();
        }
    }
}
//第一个函数
function firstFunction(){
    alert("This is first function!");    
}
//第二个函数
function secondFunction(){
    alert("This is second function!");    
}
//第三个函数
function thirdFunction(){
    alert("This is third function!");    
}
//调用第一个函数
addLoadEvent(firstFunction);
//调用第二个函数
addLoadEvent(secondFunction);
//调用第三个函数
addLoadEvent(thirdFunction);

 

posted @ 2013-02-08 15:57  夜独醉  阅读(200)  评论(0)    收藏  举报