2

我試圖構建一個擴展來使用chrome.debugger將頁面請求顯示爲一棵樹。 我希望能夠分配爲動態iframe的父代,即創建它的腳本,而不是它所在的框架。 要做到這一點,我想我需要插入一個DOM斷點,使用Chrome Debugging協議的DOMDebugger域,但我無法找到關於如何使用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 ),並且需要獲取根節點標識(DOM.getDocument),並偵聽'子樹修改'事件。 問題是,此事件沒有指定發生了哪些實際修改,或者哪些節點標識已插入文檔,所以我無法知道它是否是iframe或其他內容。 所以,我想這是不可能做我想找的東西。 – Trashie

回答

1

最後,我已經間接完成它,使用不同的工具集: - 獲取每個頁面請求(事件「Network.requestWillBeSent」) - 獲取每個腳本在頁面(事件「Debugger.scriptParsed 「)

如果一個頁面請求有一個發起者,並且有可用的棧幀,我可以得到它引起該請求的腳本。 如果請求和腳本屬於不同的frameIds,則表示該腳本正在修改(生成請求),在另一個框架中。 所以我只是假設整個iframe是由該腳本創建的(其他條件是必需的,如iframe url ==「about:blank」等) 我想有些情況下這個假設是錯誤的,但這是更接近我想我可以得到。

相關問題