【发布时间】:2016-12-18 21:10:02
【问题描述】:
我正在尝试使用 chrome.debugger 构建一个扩展以将页面请求显示为树。 我希望能够将创建它的脚本分配为动态 iframe 的父级,而不是它所在的框架。 为此,我想我需要插入一个 DOM 断点,使用 Chrome 调试协议的 DOMDebugger 域,但我找不到任何关于如何使用 setEventListenerBreakpoint 方法的示例。
使用以下代码:
chrome.debugger.sendCommand(
{tabId:currentTabId},'DOMDebugger.setEventListenerBreakpoint',{eventName:'subtree-modified'},function(a){
console.dir(arguments);
});
回调只被调用一次,以一个空对象作为参数。
我应该如何使用 setEventListenerBreakpoint?
【问题讨论】:
-
对这个领域不熟悉,但可能需要
Debugger.enable? stackoverflow.com/questions/25764336/… -
通常,您可以按照文档developer.chrome.com/devtools/docs/debugger-protocol中描述的过程手动执行相关操作时看到调试器发送的命令
-
好提示,@wOxxOm ..嗅探协议我能够找到我需要使用的正确函数(setDOMBreakpoint),这需要获取根节点 ID(DOM.getDocument) ,并监听“子树修改”事件。问题是,这个事件没有指定发生了哪些实际修改,或者在文档中插入了什么节点 ID,所以我无法知道它是否是 iframe,或者别的东西。所以,我想这只是不可能做我想要的。
-
DOM.getDocument 返回文档 nodeId。有了它,我可以调用 setDOMBreakpoint (nodeId,'subtree-modification'),它会被调用。然后,我使用 Debugger.getBacktrace(),我得到了我需要的关于脚本的所有信息。我在任何地方都没有得到,实际的子树修改是什么。我不知道是否添加了 iframe,或者删除了 div。
-
Welp,您必须使用普通的内容脚本,并按需附加 MutationObserver,它将通过后台页面报告更改。
标签: javascript iframe google-chrome-extension google-chrome-devtools