日期:2014-05-16  浏览次数:20416 次

关于DOM编程艺术中的一个函数的疑惑
下面是一段绑定初始化函数的代码,但是有点看不懂,希望大家能帮忙注释下,先谢谢啦!
JScript code

           /*-----------下面的每一句希望注释下--------------*/
            function addLoadEvent(func){
                var oldonload = window.onload;
                if(typeof window.onload != 'function'){
                    window.onload = func;
                }else{
                    window.onload = function(){
                        oldonload();
                        func();
                    }
                }
            }
            /*-----------上面的每一句希望注释下--------------*/
            addLoadEvent(firstFunction);
            addLoadEvent(secondFunction);
            addLoadEvent(threeFunction);
            function firstFunction(){
                alert(11);
            }
            function secondFunction(){
                 alert(22);
            }
            function threeFunction(){
                 alert(33);
            }



------解决方案--------------------
JScript code
/*
    * window.onload事件的扩展:允许注册多个事件,以免造成事件的覆盖
    * @param {function} func
*/ 
function addLoadEvent(func){
    var oldonload = window.onload;//如果当前window.onload中已指定事件,将其赋予oldonload保存
    //下面的第一句:
    //如果window.onload中不是函数类型,可以认为从未绑定window.onload事件,那么则直接将当前func注册进去
    //换言之,如果后面再追加了一个函数进来的话,上面的oldonload就会等于此次的func了。
    if(typeof window.onload != 'function'){
        window.onload = func;
    }else{
        window.onload = function(){
            oldonload();//否则,先执行以前注册进来的函数
            func();//再执行此次追加进来的函数
        }
    }
}