javascript模拟实现多次使用window.onload事件处理函数

javascript模拟实现多次使用window.onload事件处理函数:
大家知道当文档内容完全加载完毕的时候就会触发window.onload事件,进而执行事件处理函数。
不过利用window.onload注册事件处理函数的时候只能进行一次,因为后面的会将前面的覆盖,代码如下:
[JavaScript]  纯文本查看  复制代码 运行代码
1
2
window.onload=func;
window.onload=anotherFunc;

在上面的代码中,如果事件触发,只会第二个事件处理函数anotherFunc。
下面就模拟一下如何实现注册多个事件处理函数的功能,代码如下:
[JavaScript]  纯文本查看  复制代码 运行代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
function onloadCallback(){
   //code
}
if (window.onload){
   var onload_random= 'onload' +Math.random();
   window[onload_random]=window.onload;
   window.onload= function (){
    window[onload_random]();
    onloadCallback();
   };
}
else {
   window.onload= function (){
    onloadCallback();
   };
}

上面的代码模拟实现了多次注册window.onload事件处理函数的效果,下面介绍一下它的实现过程。
代码注释:
1.function onloadCallback(){  //code
},此函数是后来要注册的事件处理函数。
2.if(window.onload),判断是否已经注册window.onload事件处理函数。
3.var onload_random='onload'+Math.random(),声明一个变量并赋值,后面之所以加个随机数就是为了防止重复。4.window[onload_random]=window.onload,将原来的事件处理函数赋值给window对象的指定属性。
5.window.οnlοad=function(){
  window[onload_random]();
  onloadCallback();
},再重复注册事件处理函数,以前注册的就被覆盖了,不过这个不用担心,因为以前的事件处理函数已经被存储起来了,然后都放在当前的事件处理函数中就OK了。
6.else{
  window.οnlοad=function(){
    onloadCallback();
  };
}如果原来没有注册,那么一切按照老思路。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值