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")。