Google chrome extension 如何使用Chrome Devtools协议接收嵌入式iframe的事件?

Google chrome extension 如何使用Chrome Devtools协议接收嵌入式iframe的事件?,google-chrome-extension,chrome-devtools-protocol,Google Chrome Extension,Chrome Devtools Protocol,我正在尝试使用列出选项卡的网络和日志事件。我成功地在顶层框架中实现了这一点,但我正在与儿童iFrame进行斗争 当我有一个iframe作为父域时,它会捕获网络并正确记录事件。当我有一个位于不同域上的iframe时,它根本不会发出任何事件 我已尝试通过设置自动连接 chrome.debugger.sendCommand({ tabId: tabId }, "Target.setAutoAttach", { autoAttach: true, waitForDebuggerOnStart: fals

我正在尝试使用列出选项卡的网络和日志事件。我成功地在顶层框架中实现了这一点,但我正在与儿童iFrame进行斗争

当我有一个iframe作为父域时,它会捕获网络并正确记录事件。当我有一个位于不同域上的iframe时,它根本不会发出任何事件

我已尝试通过设置自动连接

chrome.debugger.sendCommand({ tabId: tabId }, "Target.setAutoAttach", { autoAttach: true, waitForDebuggerOnStart: false, flatten: true })
但这似乎对我没有任何帮助。如何在活动调试选项卡下正确检查网络并记录iframe的事件

以下是我当前使用setAutoAttach的流程:

  • 将加载一个选项卡
  • 将chrome调试器注入选项卡
  • 调用Network.enable以确保收到任何网络消息(因为没有追溯日志记录)
  • 通过扩展API重新加载选项卡
  • onDOMContentLoaded->通过协议(日志、性能、运行时)启用所有API并设置Target.setAutoAttach
  • 处理消息

  • 如果我这样做,我就不会得到附加的事件。如果我在点2(重新加载之前)设置AutoAttach,那么我将获得上一个实例的iframe。只有在完全分离调试器、重新连接并调用setAutoAttach之后,我才能获取当前选项卡的iframe。在1秒钟的超时时间内调用
    setAutoAttach
    也会给我附加的选项卡,但是现在捕获网络流量已经太迟了。

    假设您也这样做,这似乎是正确的方法。我也这么认为,但直到第二次附加调试器时,我才收到附加事件。在这种情况下,我会立即收到附加/分离。谢谢你的链接。我想这可能是我测试中用到的一个工件。如果我附加到该页面并添加iframe,则不会获得附加的事件。如果我使用我的托管示例(如普通网页),那么我将获得目标附加事件。我将在我的托管示例中使用它,而不是使用squarefree HTML编辑器。我已经为这个问题添加了更多的上下文——包括我的调用流——这可能是一个已知的问题。如果您也这样做,它无法提前附加的文档可能会消失(实验性的)。这似乎是正确的方法。我也这么认为,但直到第二次附加调试器时,我才收到附加事件。在这种情况下,我会立即收到附加/分离。谢谢你的链接。我想这可能是我测试中用到的一个工件。如果我附加到该页面并添加iframe,则不会获得附加的事件。如果我使用我的托管示例(如普通网页),那么我将获得目标附加事件。我将在我的托管示例中使用它,而不是使用squarefree HTML编辑器。我已经为这个问题添加了更多的上下文——包括我的调用流——这可能是一个已知的问题。无法提前附加且可能会消失的文档(实验性)