これが不可能だとはまだ信じられませんが、dom をループして、「addEventListener」を使用してアタッチされたすべてのイベント ハンドラを確認する方法はありますか。この投稿と他の多くの人はノーと言います。
その場合、Chrome のインスペクターや Firebug などのアプリはどのように表示しますか? 何がバインドされているかを追跡できるように、おそらく何らかの方法で dom のメソッドを拡張していると思います。
これが不可能だとはまだ信じられませんが、dom をループして、「addEventListener」を使用してアタッチされたすべてのイベント ハンドラを確認する方法はありますか。この投稿と他の多くの人はノーと言います。
その場合、Chrome のインスペクターや Firebug などのアプリはどのように表示しますか? 何がバインドされているかを追跡できるように、おそらく何らかの方法で dom のメソッドを拡張していると思います。
Chrome のコンソールには、DOM ノードにイベント リスナーが登録されているかどうかを確認するのに役立つメソッドがあります。たとえば、ドキュメント ノードにアタッチされたイベント リスナーを確認するには、次のようにします。
https://developers.google.com/chrome-developer-tools/docs/commandline-api#geteventlistenersobject
getEventListeners(document);
すべての dom ノードを再帰的に反復し、必要に応じてアタッチされているすべてのイベント ハンドラーを見つけることができます。
もちろん、ブラウザーは内部的にイベント リスナーのリストを持っていますが、ページ レベルの JavaScript には公開されていません。たとえば、Firebug (またはEventbug ) はおそらくnsIEventListenerInfoを使用します。
そうは言っても、この古い答えはまだ有効です:
DOM ノードでイベントリスナーを見つけるには?
私が試したChrome v53コンソールで:
getEventListeners(document);
それは次を返します:
__proto__: Object
私が探しているものではなく、サブ要素。
だから私は試しました:
getEventListeners(window);
それが返す
Object {beforeunload: Array[1], load: Array[1]}
それが私が探しているものです。したがって、正しいアプローチは次のとおりだと思います。
getEventListeners(myDomElement):
myDomElementは、getElementById などの標準的な方法で取得した対象オブジェクトです...