Javascript Window.Onload功能链接

时间:2008-12-14 09:13:17

标签: javascript function onload method-chaining

仅仅为了实验,我一直在尝试确定在Web浏览器中非破坏性地链接window.onload函数的不同方法。这是我到目前为止的想法:

var load = window.onload;
var newFunction = function(){
    alert("ha!");
}
window.onload = function(){
    load();
    newFunction();
}

我看到的问题是,每次链接一个函数时,它都会向堆栈添加另一级函数调用。有没有更好的方法来解决这个问题,而不会给调用堆栈增加不必要的深度?

3 个答案:

答案 0 :(得分:3)

可能最好使用addEventListener / attachEvent?

Advanced event registration models

答案 1 :(得分:0)

您可以查看jQuery他们是如何处理的。

来自jQuery docs

  

您可以根据需要在页面上拥有尽可能多的$(document).ready事件。然后按照添加的顺序执行这些功能。

答案 2 :(得分:0)

我宁愿使用“足够好”的addEvent:

var addEvent = function( obj, type, fn ) {
        if (obj.addEventListener)
                obj.addEventListener(type, fn, false);
        else if (obj.attachEvent) 
                obj.attachEvent('on' + type, function() { return fn.apply(obj, new Array(window.event));});
}

来自:http://www.ilfilosofo.com/blog/2008/04/14/addevent-preserving-this/