萬盛學電腦網

 萬盛學電腦網 >> 腳本專題 >> javascript >> js window.onload 加載多個函數和追加函數詳解

js window.onload 加載多個函數和追加函數詳解

 本篇文章主要是對js window.onload 加載多個函數和追加函數進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助

平時做項目 經常需要使用window.onload,   用法如下:   function func(){alert("this is window onload event!");return;}    window.onload=func;   或者如下:    window.onload=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 就可以了。  
copyright © 萬盛學電腦網 all rights reserved