1

実験のために、私はwindow.onloadWebブラウザーで関数を非破壊的にチェーンするさまざまな方法を決定しようとしてきました。これは私がこれまでに持っているもののアイデアです:

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

これで私が目にする問題は、関数をチェーンするたびに、スタックに別のレベルの関数呼び出しが追加されることです。コールスタックに不要な深さを追加しない、これを回避するためのより良い方法はありますか?

4

3 に答える 3

3

addEventListener / attachEventを使用する方が良いのではないでしょうか?

高度なイベント登録モデル

于 2008-12-14T09:30:27.900 に答える
0

jQueryがそれをどのように処理するかを見ることができます。

jQueryドキュメントから:

ページには、$(document).readyイベントをいくつでも含めることができます。次に、関数は追加された順序で実行されます。

于 2008-12-14T09:29:47.090 に答える
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/

于 2008-12-14T09:33:39.703 に答える