js window.onload 加载多个函数和追加函数
平時做項目 經常需要使用window.onload,
用法如下:
function func(){alert("this is window onload event!");return;}?
window.οnlοad=func;
或者如下:
window.οnlοad=function(){alert("this is window onload event!");return;}
但window.onload 不能同時加載多個函數。
比如:function t(){
alert("t")
}
function b(){
alert("b")
}
window.onload =t ;
window.onload =b ; 后面會把前面的覆蓋,上面代碼只會輸出 b。
此時可用如下方法解決:
window.onload =function() { t();??b(); }
另一種解決方法如下:
?
代碼 ?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,各取所好吧!
?
JS window.onload追加函數:
?
?
<script>if(window.attachEvent)//IE:如果瀏覽器中存在window.attachEvent函數則使用window.attachEvent函數,判斷是否是IE還可以使用:if?(document.all){//..}
window.attachEvent("onload",function()?{alert("add?method");});
else??//FireFox
window.addEventListener("load",function()?{alert("add?method");},true);
</script>
?
?
?
運行,js中alert彈出消息,問題解決。
============相關資料================
attachEvent?? 將指定函數綁定到事件,以便每當該事件在對象上觸發時都調用該函數。
?Internet Explorer 從 5.0 開始提供了一個 attachEvent 方法,使用這個方法,就可以給一個事件指派多個處理過程了。attachEvent 對于目前的 Opera 也適用。但是 Mozilla/Firefox 并不支持這個方法。但是它支持另一個 addEventListener 方法,這個方法跟 attachEvent 差不多,也是用來給一個事件指派多個處理過程的。但是它們指派的事件有些區別,在 attachEvent 方法中,事件是以 “on” 開頭的,而在 addEventListener 中,事件沒有開頭的 “on”,另外 addEventListener 還有第三個參數,一般這個參數指定為 false 就可以了。
最后感謝vForm表單驗證程序的作者-雷曉寶
?
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/chenlei65368/archive/2009/09/12/4544823.aspx
轉載于:https://www.cnblogs.com/archermeng/p/7537585.html
總結
以上是生活随笔為你收集整理的js window.onload 加载多个函数和追加函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 甯字的意思 甯是什么意思
- 下一篇: WindowsService 安装后报错