天天看點

javascript中window.onload和body onload沖突的解決方法

今天在修改一個js的bug:body中的onload事件不起作用啦,仔細排查才發現原來js中有一段window.onload的代碼,

發現原來這兩個同時存在的時候會有沖突,隻能有一個起作用,為了解決這一沖突,我在網上查到了解決方法,而且自己也想到了一個新的解決方案。

第一種方法:使用attachEvent、addEventListener方法

if (document.all){

 window.attachEvent('onload',函數名)//IE中

}

else{

 window.addEventListener('load',函數名,false);//firefox

}

函數名指的是沒有起作用的方法名稱!

<html>
<head>
<script>
function soccerOnload() {
 alert("test2");
}
window.onload = init;
if (document.all){
  window.attachEvent('onload',init);//init是沒有起作用的方法
}
else{
  window.addEventListener('load',init,false);
}

function init() {
  alert("test1");
}

</script>
  </head>
  <body οnlοad="soccerOnload();">
  <from name="theform"> 測試:<input name="birthday" id="birthday">
</form> 
  </body>
</html>
           

第二種方法:使用document.onreadystatechange

将沒有起作用的那個函數寫到 document.onreadystatechange 中

如:

document.onreadystatechange = init;

function init() {

 alert("test1");

}

第三種方法:

function addLoadEvent(func){

var oldοnlοad=window.onload;

if(typeof window.onload!='function'){

window.οnlοad=func;

}else{

window.οnlοad=function(){

oldonload();

func();

}

}

}

//添加要加載執行的事件:

addLoadEvent(init);