addLoadEvent(func)有关

今天看编程艺术看到了这个函数,具体代码如下:

 1 function addLoadEvent(func) {
 2   var oldonload = window.onload;
 3   if (typeof window.onload != 'function') {
 4     window.onload = func;
 5   } else {
 6     window.onload = function() {
 7       if (oldonload) {
 8         oldonload();
 9       }
10       func();
11     }
12   }
13 }

调用方法是:

addLoadEvent(function() {   
    document.body.style.backgroundColor = 'yellow';   
})   


addLoadEvent(firstFunction);  

 

因为我们知道在一个JS文件里面只能有一个window.onload事件,如果我们用window.onload = firstFunction; window.onload = secondFunction;那样的话secondFunction将取代firstFunction.

PS,用jquery的事件可以重复调用,就是

$(document).ready(function() {
//doing... 
});

 

我们也可以这么写:

window.onload = function(){
  firstFunction();
  secondFunction();
}

但是在绑定很多个函数的时候,这么写太麻烦了。。。

所以才有了上面的addLoadEvent函数,

这个函数要完成的操作是:

1,把现有的window.onload事件处理函数的值存入变量oldonload。

2,如果这个处理函数上还没有绑定任何函数,就像平时那样把新函数添加给它。

3,如果这个处理函数上已经绑定了一些函数,就把新函数追加到现有函数的尾部。

这里比较巧妙的是在判断是福绑定函数的判断上,if(typeof window.onload != "function")。

posted @ 2012-06-11 16:27  赤骥绝地  阅读(233)  评论(1编辑  收藏  举报

友情链接:

梦想天空