如果你有两个window.onload=function(){} 引起冲突

不要奇怪。

为什么会出现两个window.onload。

很久很久以前。

我一直不明白为什么 有的 JavaScript 必须写在页面的底部才会正常执行。

而放到页面的head区则没有任何反应。

后来我明白了 因为页面加载速度的原因。

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

对于这样的情况有两个解决方法:

1、将脚本写到html的结束位置。这样只有html全部接在完毕后才会加载执行JavaScript脚本。

2、将脚本放在任意位置。通过 window.onload来执行脚本。

window.onload的意思是当页面加载完毕的时候执行。

很久很久以后,我遇到了一个新的问题。

我有两个window.οnlοad=function(){};


我自己写一个函数(T_T不是类,我蹩脚的JavaScript还不会封装类哦!)。这个函数必须在页面加载完毕之后才能正常执行。

开始我就写了一个window.onload来执行这个函数。

然后我发现了这行不通。

我写这个函数就是为了封装好给别人用的。

最终目的是 只要在页面里引用这个JavaScript脚本就可以实现相关功能。

但是现在这个脚本占用了window.onload……。

而通常一个页面是只能执行一个window.onload的。

假设某个用户使用了我这个脚本。

而他因为其他原因需要用到window.onload那不是冲突了……。

两个只能活一个啊……。

那假如我有两个window.onload应该怎么办呢?

这时就要用window.attachEvent和window.addEventListener来解决一下。

当某一事件被触发时需要执行某个函数,在IE下可用attachEvent,在FF下则要用addEventListener。

attachEvent()有两个参数,第一个是事件名称,第二个是需执行的函数;

addEventListener()有三个参数,第一个是事件名称,但与IE事件不同的是,事件不带"on",比如"onsubmit"在这里应为"submit",第二个是需执行的函数,第三个参数为布尔值;

if (document.all){

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

}

else{

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

}

使用上边的脚本来执行我的函数就可以不与其他的onload冲突啦!

这真是太爽了!

看到prototype.js中有个Event.observe的方法可以实现这种功能。不过为了这个在加载个prototype.js。有点累赘哦。


解决多个window.onload的冲突.txt

window.οnlοad=function(){
   alert("加载完成");
   onload2();
   onload3();
}


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/mtzai/archive/2009/11/21/4846404.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值