Chrome 扩展内容脚本访问扩展框架

Chrome extension content script access to extension frame

我正在寻找一种从内容脚本内部从原始弹出页面发送数据(或直接编辑)DOM/HTML 的方法。我的脚本使用以下行启动:

chrome.tabs.executeScript(null, {file: "script.js"});

我正在寻找一种方法来访问原始弹出窗口的 HTML,这样我就可以编写和更新 script.js 正在动态执行的日志。

如果您需要更多信息,我将非常乐意编辑此 post。

非常感谢您的帮助!

扩展上下文和内容脚本上下文之间存在安全隔离。您不能仅从内容脚本中引用弹出窗口的 window(不同于扩展上下文中的 getBackgroundPage()getViews(),这是一种黑客攻击)。

两者之间的正确通信方式是 Messaging(您可以通过 runtime.sendMessage 从内容脚本发送消息,弹出窗口将在接收者之间)。

重要的是要记住弹出窗口可以关闭,然后它的状态将会丢失并且不会被监听。在这种情况下,您要么想使用后台脚本作为两者之间的 "proxy",要么使用一些持久性存储,例如 chrome.storage.

最后,Messaging/Storage 仅支持 JSON-可序列化的负载。这意味着您不能发送 DOM 个节点,等等。您只需要传达您的目的所需的最低限度数据,并在弹出窗口端构建 DOM。