2

私の目標は、JavaScript でのイベント ハンドラーのすべての登録を動的にトレースすることです。これには、ドキュメントとウィンドウ オブジェクトが含まれますが、これらに限定されません。コードの一部は、Web サイトの残りの部分が実行される前に実行され (onLoad)、どの関数がイベントに登録されるかを報告する必要があります。addEventListener、などをラップしたいのですがonmouseclickonmessageオブジェクトごとに個別にこれを行いたくありません。

Object.constructorコンストラクターで自己検査を実行するように動作を変更することを検討していました。コードは非常に簡単で、大まかに次のようになります。

var toWrap = [ "addEventListener", "onclick", "..." ];

for ( var x in toWrap ) {
    if ( toWrap[x] in this ) {
        this[toWrap[x]] = wrap(toWrap[x], this[toWrap[x]]);
    }
}

...しかし、コードを差し込む正しい場所はどこですか?

純粋な JavaScript ソリューションは、jQuery などよりも優先されます。私は PhantomJS で実装しています。

アップデート:

これを読んだ後、次のコードを思いつきました。うまく機能しているようです - 何か異論はありますか?

Object = ( function ( ) {
    this.wrap = function(e) {
        // ....
    }   
    this.wrap();
});
4

0 に答える 0