网页加载时共享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);
浙公网安备 33010602011771号