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。
我正在寻找一种从内容脚本内部从原始弹出页面发送数据(或直接编辑)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。