window.onload和body onload冲突的解决办法
来源:精品源码 时间:2013/12/14
前段时间做过一段页面的js特效。有段js特效失效,检查之后发现是两块地方都应用了window.onload,他们之间就起冲突了。
研究发现,某段JS中调用了window.onload = function()属性,同时在页面上又有body onload语句。导致window.onload事件覆盖掉body onload事件。
window.onload和body onload冲突的解决办法:
attachEvent给onload添加所需运行的函数
其实直接使用隐式函数(如:window.onload =function() { t(); b(); c() ;})更快捷,当然使用 addLoadEvent 更完美,各取所好吧!
研究发现,某段JS中调用了window.onload = function()属性,同时在页面上又有body onload语句。导致window.onload事件覆盖掉body onload事件。
window.onload和body onload冲突的解决办法:
attachEvent给onload添加所需运行的函数
if (document.all){
window.attachEvent('onload',FuncName)
}
else{
window.addEventListener('load',FuncName,false);
}
或者把两个初始化函数再组成一个新的函数window.attachEvent('onload',FuncName)
}
else{
window.addEventListener('load',FuncName,false);
}
function myinit()
{//两个函数合并下
init();
myfun();
}
window.onload=myinit;
另外,见过书上有这样的写法:{//两个函数合并下
init();
myfun();
}
window.onload=myinit;
function addLoadEvent(func){
var oldonload=window.onload;
if(typeof window.onload!='function'){
window.onload=func;
}else{
window.onload=function(){
oldonload()
; func();
}
}
}
//添加要加载执行的事件:
addLoadEvent(aaa);
addLoadEvent(bbb)
我应用的是第三种 方法,把他写成函数,直接调用就行,简单方便var oldonload=window.onload;
if(typeof window.onload!='function'){
window.onload=func;
}else{
window.onload=function(){
oldonload()
; func();
}
}
}
//添加要加载执行的事件:
addLoadEvent(aaa);
addLoadEvent(bbb)
其实直接使用隐式函数(如:window.onload =function() { t(); b(); c() ;})更快捷,当然使用 addLoadEvent 更完美,各取所好吧!