首頁  >  文章  >  web前端  >  js window.onload 載入多個函數和追加函數詳解_javascript技巧

js window.onload 載入多個函數和追加函數詳解_javascript技巧

WBOY
WBOY原創
2016-05-16 17:05:021523瀏覽

平常做專案 常常需要使用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() {由於我對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 ! >    window.onload = func;
  } else { 
    window.onload = function() {
      
}

addLoadEvent(t);
addLoadEvent(b);
addLoadEvent(c);
//等價於  window.onload =function() { t();  b(); c( ) ;}


個人以為直接使用隱式函數(如:window.onload =function() { t();  b(); c() ;})比較快捷,當然使用addLoadEvent更professional,各取所好吧!


JS window.onload追加函數:


複製程式碼

複製程式碼 程式碼如下<script></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);



運行,js中alert彈出訊息,問題解決。

============相關資料================

attachEvent   將指定函數綁定到事件,以便每當該事件在物件上觸發時都會呼叫該函數。

Internet Explorer 從 5.0 開始提供了一個 attachEvent 方法,使用這個方法,就可以為一個事件指派多個處理過程了。 attachEvent 對於目前的 Opera 也適用。但是 Mozilla/Firefox 並不支援這個方法。但是它支援另一個 addEventListener 方法,這個方法跟 attachEvent 差不多,也是用來指派一個事件多個處理過程的。但它們指派的事件有些區別,在attachEvent 方法中,事件是以“on” 開頭的,而在addEventListener 中,事件沒有開頭的“on”,另外addEventListener 還有第三個參數,一般這個參數指定為false就可以了。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn