共享onload事件

写 JavaScript 时经常需要在网页加载后再执行JS,这里我们会使用 window.onload 事件。例如:

window.onload = fun;

但是如果有两个或两个以上函数时,假如我们写成这样:

window.onload = fun1;
window.onload = fun2;

事实上只会执行fun2这个函数,对此我们必须创建一个匿名函数来容纳要执行的内容:

window.onload = function () {
    fun1();
    fun2();
}

这样写虽然能解决某些问题,但如果有多个 JavaScript 文件,每个文件都需要用到 window.onload 方法,这种情况用上面提到的方法编写代码则会非常麻烦。对于这种情况可以使用 Simon Willison 编写的一个实用脚本(详见http://simon.incutio.com)。

function addLoadEvent(func) {
    //将window.onload事件存入oldonload中
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        //如果没有绑定函数,则将绑定新函数
        window.onload=func; 
    } 
    else {
        //如果已绑定函数,则将新函数追加到现在函数后面;
        window.onload=function() {
            oldonload();
            func();
        }
    }
}

addLoadEvent(alert('我可以不是函数'));
addLoadEvent(fun1);
addLoadEvent(fun2);
posted @ 2013-04-19 18:21  Milly  阅读(385)  评论(0编辑  收藏  举报