デベロッパー ツールを使用して Chrome のボタンまたは要素によって実行されるコードを見つける方法 質問する

デベロッパー ツールを使用して Chrome のボタンまたは要素によって実行されるコードを見つける方法 質問する

Chrome と自分のウェブサイトを使用しています。

内部から私が知っていること:

1 ) オレンジ色の画像ボタンをクリックしてサインアップするフォームがあります。

ここに画像の説明を入力してください

2 ) 調べてみると、次のとおりです。<img class="formSend" src="images/botoninscribirse2.png">

3 ) ソースコードの先頭には、大量のスクリプトソースがあります。ボタンがどのスクリプトを呼び出すかは、私がコーディングしたのでわかります。<script src="js/jquery2.js" type="text/javascript"></script>

4 ) そのファイル内には、$(".formSend").click(function() { ... });ボタンによってトリガーされるもの (かなり複雑なフォーム検証を実行して送信する) があり、どの Web サイトでも Chrome 開発ツールを使用してそれを見つけられるようにしたいと考えています

要素がどこで呼び出されるかを知るにはどうすればよいですか?

リスナー タブは機能しませんでした。そこで、クリック イベント リスナーを探してみました。これは安全な方法のように思えますが、jquery2.jsそこには何もありませんでした (コードがどのファイルにあるかは実際にはわからないため、これらすべてを確認するのは時間の無駄です...)。

ここに画像の説明を入力してください

$(".formSend").click(function() { ... });ファイル内の関数がjquery2.jsそこにありません。

ジェシー理由を説明します:

「最後に、関数がクリック イベント ハンドラーに直接バインドされない理由は、jQuery がバインドされる関数を返すためです。jQuery の関数は、次にいくつかの抽象化レイヤーとチェックを通過し、そのどこかで関数を実行します。」


皆さんの提案に従って、私は効果があった方法を集めました下の回答の1つ

ベストアンサー1

アレクサンダー・パブロフの答えあなたが望むものに最も近づきます。

jQueryの抽象化と機能の広範さのため、イベントの核心にたどり着くには多くのハードルを乗り越えなければなりません。私はこれを設定しましたjsFiddle作品をデモンストレーションする。


1. イベントリスナーブレークポイントの設定

これに近かったですね。

  1. Chrome 開発ツール (F12) を開き、[ソース] タブに移動します。
  2. マウスにドリルダウン -> クリック
    Chrome Dev Tools -> Sources タブ -> マウス -> クリック
    (クリックすると拡大します)

2. ボタンをクリックして下さい。

Chrome Dev Tools はスクリプトの実行を一時停止し、縮小されたコードの美しい組み合わせを表示します。

Chrome Dev Tools がスクリプトの実行を一時停止しました (クリックすると拡大します)


3. 素晴らしいコードを見つけましょう!

ここでのコツは、キーを押すことに夢中にならず、画面に注意を払うことです。

  1. F11目的のソースコードが表示されるまでキー(ステップイン)を押します
  2. ついにソースコードに到達
    • の中にjsFiddle上記のサンプルでは、​​目的のイベントハンドラ/関数に到達するまでにF11 108回押す必要がありました。
    • イベントをバインドするために使用されるjQuery(またはフレームワークライブラリ)のバージョンに応じて、結果は異なる場合があります。
    • 十分な時間と労力を費やせば、どんなイベントハンドラや関数でも見つけることができる。

必要なイベントハンドラ/関数


4. 説明

jQuery がなぜ多くの抽象化レイヤーを通過するのか、正確な答えや説明はわかりません。私が示唆できるのは、コードを実行するブラウザーから jQuery の使用を抽象化する役割があるためだということです。

がここにありますjsFiddlejQuery のデバッグ バージョン (つまり、縮小されていないバージョン) を使用します。最初の (縮小されていない) ブレークポイントのコードを確認すると、コードがさまざまな処理を行っていることがわかります。

    // ...snip...

    if ( !(eventHandle = elemData.handle) ) {
        eventHandle = elemData.handle = function( e ) {
            // Discard the second event of a jQuery.event.trigger() and
            // when an event is called after a page has unloaded
            return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ?
                jQuery.event.dispatch.apply( elem, arguments ) : undefined;
        };
    }

    // ...snip...

「実行が一時停止し、行ごとにジャンプする」というエラーが発生したときに、それを見逃したと思う理由は、ステップインではなく「ステップオーバー」機能を使用したためかもしれません。ここにStackOverflowの回答違いを説明します。

最後に、関数がクリック イベント ハンドラーに直接バインドされない理由は、jQuery がバインドされる関数を返すためです。jQuery の関数は、いくつかの抽象化レイヤーとチェックを通過し、そのどこかで関数を実行します。

おすすめ記事