私のページにリンクがあるとしましょう:
<a href="#" id="foo">Click Here</a>
他には何も知りませんが、リンクをクリックすると、アラート(「バー」)が表示されます。だから私はどこかで、いくつかのコードが#fooにバインドされていることを知っています。
アラート(「バー」)をクリックイベントにバインドしているコードを見つけるにはどうすればよいですか? Chromeのソリューションを探しています。
追伸:この例は架空のものであるため、「XXXXXXを使用してプロジェクト全体で「alert(\ "bar \")」を検索するなどの解決策は探していません。本当のデバッグ/トレースソリューションが必要です。
Chrome 15.0.865.0 devを使用します。 [要素]パネルには[イベントリスナー]セクションがあります。
また、スクリプトパネルの「イベントリスナーブレークポイント」。マウスを使用->ブレークポイントをクリックし、呼び出しスタックを監視しながら「次の関数呼び出しにステップイン」して、どのユーザーランド関数がイベントを処理するかを確認します。理想的には、ステップインする必要がなく、常に可能な場合はステップオーバー。
次のように、Chromeのインスペクターを使用して、添付されたイベントを別の方法で見つけることもできます。
これにより、次の画像に示すようにハンドラーが定義された場所に移動し、Paul Irishがここで説明します: https://groups.google.com/forum/#!topic/google-chrome-developer -tools/NTcIS15uigA
インストール後、次の手順に従って、jQuery Audit拡張機能( https://chrome.google.com/webstore/detail/jquery-audit/dhhnpbajdcgdmbbcoakfhmfgmemlncjg )を試してください:
Edit:私自身の答えの代わりに、これはかなり優れた: Firebug(または同様のツール)でJavaScript/jQueryイベントバインディングをデバッグする方法
Google Chrome開発者ツールには、スクリプトセクションに検索機能が組み込まれています
このツールに慣れていない場合:(念のため)
#IDのクイック検索を行うと、最終的にバインディング関数に移動するはずです。
例:#foo
を検索すると、
$('#foo').click(function(){ alert('bar'); })
2018アップデート-将来の読者に役立つかもしれません:
これが最初にChromeで導入されたのかどうかはわかりません。ただし、これをChromeで実行できる別の(簡単な)方法は、コンソールコマンドを使用することです。
例:(in chrome console type)
getEventListeners($0)
一方、$ 0はDOMで選択された要素です。
https://developers.google.com/web/tools/chrome-devtools/console/command-line-reference#0_-_4
findEventHandlersはjqueryプラグインです。未処理のコードは次のとおりです。 https://raw.githubusercontent.com/ruidfigueiredo/findHandlersJS/master/findEventHandlers.js
手順
生のコードを直接Chromeのコンソールに貼り付けます(注:jqueryが既にロードされている必要があります)
次の関数呼び出しを使用します:findEventHandlers(eventType, selector);
対応するセレクタの指定された要素のeventTypeハンドラを検索します。
例:
findEventHandlers("click", "#clickThis");
次に、使用可能なイベントハンドラーが表示されたら、展開してハンドラーを見つけ、関数を右クリックして[show function definition
]を選択する必要があります。
参照: https://blinkingcaret.wordpress.com/2014/01/17/quickly-finding-and-debugging-jquery-event-handlers/
Chromeバージョン52.0.2743.116の場合:
Chromeのデベロッパーツールで、Ctrl
+ Shift
+ F
を押して[検索]パネルを表示します。
検索しようとしている要素の名前を入力します。
バインドされた要素の結果がパネルに表示され、それらが配置されているファイルが示されます。