web-dev-qa-db-ja.com

ページを更新する直前のブレークポイント?

どこかでブラウザーページの更新をトリガーしているサードパーティの縮小Javascriptをデバッグしています。ただし、コードのどの部分が更新を引き起こしているのかはわかりません。

Chromeにブレークポイントを置く方法はありますか?ページが更新される直前にヒットするため、コールスタックを調べて原因を確認できますか?

18
Thomas Johnson

これを試して:

  1. Chrome開発ツールを開きます
  2. [ソース]タブに移動します
  3. 右側のパネルで、[イベントリスナーブレークポイント]を展開します。
  4. 「ロード」ツリーを展開します
  5. beforeunloadおよびunloadオプションを確認します

それが役立つかどうかを確認してください。下のスクリーンショット。

Chrome Dev Tools with Suggested Event Listener Breakpoints Checked

編集:代わりに、それが機能しない場合は、Chromeを使用して、ロードされたすべてのスクリプトで原因となっている可能性のあるコードを検索できます。明らかに JavaScriptを含むページ ですが、ほとんどの場合、「ナビゲーター」、「場所」、「リロード」、「ウィンドウ」などの一般的な文字列がいくつかあります。

最後に、現在アクセスしている同じページへのリンクがある場合、一部のJSがクリックをトリガーしている可能性があります。

(私がモバイルにいるときのフォーマットを許してください...)

29
Alexander Nied

Firefox(Chromeではなく、重要)開発者ツールで、コンソールに移動し、addEventListener('beforeunload',()=>{debugger})と入力して、コードを実行します。デバッガーがdebuggerステートメントで停止したら、呼び出しスタックを確認します。イベントをトリガーした原因がわかります。 Chromeそこにはありませんでした。

少なくとも、これでうまくいきました。

9
thorn̈

Devtool、ネットワークペインで、[ログの保持]を切り替え、イニシエーター列を注意深く確認します。

6
周长林

サードパーティライブラリの機能を指定する必要はありません。広告などのUIコンポーネントの場合は、iframe内に配置し、sandbox属性を必要に応じて構成します。 https://developer.mozilla。 org/en/docs/Web/HTML/Element/iframe (下にスクロールしてサンドボックス属性セクション)

イベントによってトリガーされたものである場合は、(chrome開発ツールのみ)でgetEveneListener()関数を使用し、listenerトレイルを追跡します...(難しいが可能)例:

enter image description here

リスナープロパティは、呼び出される実際の関数に導きます。難読化されたコードでそれらを検索し、その目的を理解するためにデバッガーを追加できます。

他にも多くのシナリオがあります-より多くを指定できる場合。

2
fistuks