
Webアプリケーションには、毎年、ますます多くのクライアントコードがあります。 時には、これらは数百の機能を持つ数十のファイルです。 そして、イベントで実行されるコードを変更する必要がある場合(リンクをクリックするなど)に何をすべきか。 彼を見つける方法は? この問題の解決策を考えると、いくつかの異なるオプションを思いつきました。 それぞれに長所と短所があります。 そして、記事の最後に、私にとって最適な方法を提案します。
タスクステートメント
タイトルは質問の本質を反映しているとすぐに言わなければなりません。jQueryライブラリを使用して追加されたイベントハンドラを探しています。これは現在非常に人気があります。 ソリューションを実証するために、他のブラウザのコンソールでは利用できない高度な機能を提供するGoogle Chrome開発者ツールを使用します。 これらのチップがなければ、いくつかのソリューションはまったく不可能です。
実験ウサギ

方法1


長所
- 簡単な場合には動作します
短所
- jQueryが使用されている場合、このメソッドは無効です
- ハンドラーがlive()を介してハングした場合、リストには表示されません
イベントにブレークポイントを置く


長所
- 時々それは動作します
短所
- 今回は機能しませんでした
- 複数のハンドラーがハングしている場合、最初のハンドラーしかキャッチできず、残りは見つかりません
何かを知っているなら

長所
- 迅速な決定
短所
- あなたは常に適用することはできません、解決策は普遍的ではありません
Chrome拡張機能を使用する

長所
- とても使いやすい
- 必要なものすべてを表示します
短所
- 何かをインストールする必要があります
- 複雑なレイアウトのページでは、多くのアイコンは表示できません。
- タスクはまだ完全に解決されていません。コードを見ましたが、どのファイルとどの行にあるかはわかりません
拡張せずにできます
Truハッカーは、Javascriptコンソールで$(セレクター).data(「イベント」)を記述するだけで、要素に接続されているすべてのハンドラーを確認できます。 ハンドラーがlive()を介してハングした場合、$(ドキュメント).data( 'events')を出力し、リストで目的のものを探す必要があります。 ただし、拡張機能の場合のように、このメソッドは問題を最後まで解決しません。同時に、かなりの時間、目的のハンドラーを検索する必要があります。
ついに

- Google Chrome開発者ツール(F12)を開き、「スクリプト」タブを選択して、ドロップダウンリストでjQueryスクリプトを見つけます。
- 美学のために「きれいなプリント」ボタンをクリックしてください。
- 検索で「handle:」と入力すると、jQueryイベントハンドラーが見つかります。 関数の宣言にすぐに進むために、末尾にコロンが配置されます。 ライブラリの新しいバージョンでは、この関数はディスパッチと呼ばれますが、ポイントではありません。 この機能は、割り当てられたすべてのイベントが通過するポイントです。 十分なコードがあります。適用するための呼び出しがある行は、私たちにとって重要です-これは、基本的に、目的のコードへの呼び出しです。
- 多くのイベントが関数を通過するため、従来のブレークポイントではなく、条件付きブレークポイントを設定します。 関数の最初のパラメーターはイベントオブジェクトであるため、「arguments [0] .type == 'click'」と記述します。
- リンクをクリックすると、行のブレークポイントがトリガーされます。
- 目的のコードに移動するには、[次の関数呼び出しにステップイン](F11)をクリックします。 出来上がり! 必要なコードを見つけただけでなく、どのファイルにどの行に配置されているかもわかります。 問題は解決しました。 素晴らしい。
- 複数のプロセッサがあり、F8 F11を連続して押すと、目的のプロセッサに到達します。
長所
- 本当に問題を解決します
- タスクは標準ツールで解決されます
- 普遍的な方法
短所
- 脳はオンでなければなりません