js window.onload 加载多个函数和追加函数

平时作项目常常须要使用window.onload,html

用法以下:浏览器

functionfunc(){alert("thisiswindowonloadevent!");return;}
ide

window.onload=func;函数

或者以下:
post

window.onload=function(){alert("thisiswindowonloadevent!");return;}this

但window.onload不能同时加载多个函数。spa

好比:
functiont(){
alert("t")
}
functionb(){
alert("b")
}
window.onload=t;
window.onload=b;
后面会把前面的覆盖,上面代码只会输出b。

此时可用以下方法解决:code

window.onload=function(){t();b();}orm

另外一种解决方法以下:htm

复制代码
ContractedBlock.gif ExpandedBlockStart.gif 代码
function addLoadEvent(func){
var oldonload = window.onload; // 获得上一个onload事件的函数
if ( typeof window.onload != ' function ' ){ // 判断类型是否为'function',注意typeof返回的是字符串
window.onload = func;
}
else {
window.onload
= function (){
oldonload();
// 调用以前覆盖的onload事件的函数---->因为我对js了解很少,这里我暂时理解为经过覆盖onload事件的函数来实现加载多个函数
func(); // 调用当前事件函数
}
}
}

// (完整示例)使用以下:

function t(){
alert(
" t " )
}
function b(){
alert(
" b " )
}
function c(){
alert(
" c " )
}
function addLoadEvent(func){
var oldonload = window.onload;
if ( typeof window.onload != ' function ' ){
window.onload
= func;
}
else {
window.onload
= function (){
oldonload();
func();
}
}
}

addLoadEvent(t);
addLoadEvent(b);
addLoadEvent(c);
// 等价于window.onload=function(){t();b();c();}
复制代码

我的觉得直接使用隐式函数(如:window.onload=function(){t();b();c();})更快捷,固然使用addLoadEvent更professional,各取所好吧!

JSwindow.onload追加函数:

ContractedBlock.gif ExpandedBlockStart.gif 代码
< script >
if (window.attachEvent) // IE:若是浏览器中存在window.attachEvent函数则使用window.attachEvent函数,判断是不是IE还可使用:if(document.all){//..}
window.attachEvent( " onload " , function (){alert( " addmethod " );});
else // FireFox
window.addEventListener( " load " , function (){alert( " addmethod " );}, true );
< / script>

运行,js中alert弹出消息,问题解决。

============相关资料================

attachEvent将指定函数绑定到事件,以便每当该事件在对象上触发时都调用该函数。

InternetExplorer从5.0开始提供了一个attachEvent方法,使用这个方法,就能够给一个事件指派多个处理过程了。attachEvent对于目前的Opera也适用。可是Mozilla/Firefox并不支持这个方法。可是它支持另外一个addEventListener方法,这个方法跟attachEvent差很少,也是用来给一个事件指派多个处理过程的。可是它们指派的事件有些区别,在attachEvent方法中,事件是以“on”开头的,而在addEventListener中,事件没有开头的“on”,另外addEventListener还有第三个参数,通常这个参数指定为false就能够了。

最后感谢vForm表单验证程序的做者-雷晓宝

相关文章
相关标签/搜索