平时作项目常常须要使用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
代码
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追加函数:
代码
<
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表单验证程序的做者-雷晓宝