今天在修改一個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);