2

chrome.debuggerを使用して、ページリクエストをツリーとして表示する拡張機能を構築しようとしています。 ダイナミックiframeの親として、それを作成したスクリプトではなく、そのフレームが配置されているフレームを割り当てることができます。 これを行うには、Chrome DebuggingプロトコルのDOMDebuggerドメインを使用してDOMブレークポイントを挿入する必要がありますが、setEventListenerBreakpointメソッドの使用方法に関する例は見つかりません。次のコードでChrome拡張機能:iframeを作成したスクリプトを検出します。

chrome.debugger.sendCommand(
{tabId:currentTabId},'DOMDebugger.setEventListenerBreakpoint',{eventName:'subtree-modified'},function(a){ 
       console.dir(arguments); 
      }); 

コールバックは、引数として空のオブジェクトで、一度だけ呼ばれます。

setEventListenerBreakpointはどのように使用しますか?最後に

+0

このフィールドについて詳しくはありませんが、おそらく 'Debugger.enable'が必要ですか? http://stackoverflow.com/questions/25764336/chrome-extension-domdebugger-api-does-not-work-anymore –

+0

一般的に、問題のアクションを手動で実行している間にデバッガから送信されたコマンドを表示できます。手順https://developer.chrome.com/devtools/docs/debugger-protocol – wOxxOm

+0

良いヒント、@ wOxxOm ..プロトコルを私は使用する必要があるだろう右の機能を見つけることができました(setDOMBreakpoint )、ルートノードID(DOM.getDocument)を取得し、サブツリー変更されたイベントをリッスンする必要があります。 問題は、このイベントは実際に発生した変更や、ドキュメントなので、iframeかどうかわからない。 だから、私が探していたことをすることはできないと思う。 – Trashie

答えて

1

は、私は、ツールの異なるセット使用して、間接的にそれをやった: を - 各ページ要求(イベント「Network.requestWillBeSent」) を取得 - ページ内の各スクリプトを取得する(イベント「Debugger.scriptParsed ")

ページリクエストにイニシエータがあり、使用可能なスタックフレームがある場合、そのリクエストの原因となっているスクリプトを取得できます。 要求とスクリプトが異なるフレームIDに属する場合、異なるフレームでスクリプトが変更(要求の生成)を行っていることを意味します。 だから私は、iframe全体がそのスクリプトによって作成されたと仮定します(iframe url == "about:blank"などのような他の条件が必要です) この仮定が偽である場合がありますが、私は得ることができると思う。

関連する問題