原生js中如果有多個onload事件解決方案


在一個頁面中有兩個JavaScript 分別都用到了window.onload

一個是:window.onload=func1,另一個是:window.onload=func2 這樣就造成了一個JavaScript 運行不了。

方案一:

window.onload=function(){func1();func2();}

方案二:

用window.attachEvent和 window.addEventListener來解決問題了

window.addEventListener("load",調用函數名,false);//對於FireFox 
window.attachEvent("onload",調用函數名)//對於IE 

方案三

function addLoadEvent(func){  
    var oldonload = window.onload; //把現在有window.onload事件處理函數的值存入變量oldonload。  
    if(typeof window.onload != 'function'){ //如果這個處理函數還沒有綁定任何函數,就像平時那樣把新函數添加給它  
        window.onload = func;  
    }else{ //如果在這個處理函數上已經綁定了一些函數。就把新函數追加到現有指令的末尾  
        window.onload = function(){  
            oldonload();  
            func();  
        }  
    }  
  
}  
addLoadEvent(num1);
addLoadEvent(num2);

如果有人接下來的js寫了一個加載事件:

window.onload = function(){ console.log('最后再來個頁面加載函數')} 

結果妥妥的被覆蓋了,只會執行最后一個window.load的內容,因此方案三不可取

推薦使用現代瀏覽器事件綁定 方案二。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM