javascript模拟实现多次使用window.onload事件处理函数:
大家知道当文档内容完全加载完毕的时候就会触发window.onload事件,进而执行事件处理函数。
不过利用window.onload注册事件处理函数的时候只能进行一次,因为后面的会将前面的覆盖,代码如下:
在上面的代码中,如果事件触发,只会第二个事件处理函数anotherFunc。
下面就模拟一下如何实现注册多个事件处理函数的功能,代码如下:
上面的代码模拟实现了多次注册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();
};
}如果原来没有注册,那么一切按照老思路。
大家知道当文档内容完全加载完毕的时候就会触发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();
};
}如果原来没有注册,那么一切按照老思路。