google-chrome-extension - 如何使用 Chrome Devtools 协议接收嵌入式 iframe 的事件?
问题描述
我正在尝试使用Chrome Devtools 协议列出选项卡的网络和日志事件。我成功地为顶级框架这样做了,但我正在努力处理儿童 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——在重新加载之前——那么我得到了 PREVIOUS 实例的 iframe。我只能在完全分离调试器,重新附加,然后调用 setAutoAttach 之后获取当前选项卡的 iframe。调用setAutoAttach
1 秒的超时也最终给了我附加的选项卡,但是捕获网络流量为时已晚。
解决方案
推荐阅读
- mysql - 使用while循环等待回调时未执行NodeJS Mysql异步查询
- java - 如何根据JAVA中存在的整数值对字符串进行排序
- python - Python/Flask/SQLite - 没有 SQLAlchemy 的带有下一个/上一个按钮的分页和导航
- flutter - 如何将音频的 StreamedResponse 保存到 Flutter 中的文件?
- javascript - $scope 变量不加载值
- azure-devops - Azure DevOps PR 管道中的 SonarCloud 分析任务失败
- visual-studio - 解决方案中所有 Visual Studio 项目的相同配置项
- angular - 如何以角度反应形式从 html 中删除特定的动态元素
- java - 设置域名spring boot href
- python - SpeechBrain:带有 csv 的 dataio_prepare 函数