window.onload兼容ie和ff以及多次调用导致相冲突的解决方法

 
标签:

杂谈

分类: JS/JQuery

有的JavaScript脚本必须等待页面加载结束 才能正常执行。

对于这样的情况有两个解决方法:
1、将脚本写到html的结束位置。这样只有html全部接在完毕后才会加载执行JavaScript脚本。
2、将脚本放在任意位置。通过 window.onload来执行脚本。 window.onload的意思是当页面加载完毕的时候执行。

***********************************************************************

一般使用下面的办法来执行页面加载时所需要调用的函数:

<!– 页面加载脚本 –>
<script type=”text/javascript”>
window.onload = function(){
if(window.document.all){
window.attachEvent(”onload”, windowOnload);
} else {
window.addEventListener(”load”, windowOnload(), false);
}
}
//页面加载时需要执行的方法
function windowOnload(){
alert(2);
}
</script>

********************************************************************************

但是,一般的大型项目中都包含框架,如果框架页面里也调用了window.onload方法,或者body触发了onload事件 (即:<body οnlοad=”javascript: test();”></body>),然后在框架中的局部页面也需要触发window.onload事件,此时就需要使用下面的办法来避免多次调用window.onload方法导致的冲突问题了:

先定义一个全局的方法:

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();
}
}
}
接下来,在框架页面和局部页面中,都可以通过这样方式来调用window.onload()方法:
<!– 页面加载脚本 –>
<script type=”text/javascript”>
addLoadEvent(windowOnload);
function windowOnload(){

alert(2);

}

</script>

以下是我遇到的解决方法,其他页面加载我的js,为了防止和他页面的onload冲突,我的js中的处理

var _sso_onload = function(){

alert(’1111′);

}

然后在我的js最后加上

var addEvent = function(obj,eventType,func){if(obj.attachEvent){obj.attachEvent(”on” +
eventType,func);}else{obj.addEventListener(eventType,func,false)}};

addEvent(document.body,’load’,function(){_sso_onload();initUserName();});  调用了_sso_onload();initUserName();两个函数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值