2

我正在寻找一种从原始弹出页面,从内容脚本内部发送数据(或直接编辑)DOM/HTML的方法。Chrome扩展内容脚本访问扩展框架

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

我正在寻找一种方式来访问原始弹出的HTML,所以我可以编写和更新日志什么的script.js动态做:我的脚本使用以下行启动。

如果您需要更多信息,我将非常乐意编辑这篇文章。

非常感谢您的帮助!

+0

我很困惑你的问题。你能否编辑你的文章并使其更清楚?看起来你想从弹出页面发送数据到..什么? –

回答

1

扩展上下文与内容脚本上下文之间存在安全分离。您不能仅从内容脚本中引用弹出框的window(与扩展上下文中的getBackgroundPage()getViews()不同,这是开始的一种破解)。

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

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

最后,Messaging/Storage仅支持JSON序列化的有效载荷。这意味着除了其他事情之外,您不能发送DOM节点。您只需要传达您的目的所需的最少数据,并在弹出窗口中构建DOM。

+0

非常感谢,我会检查出来。我遇到了另一个问题;在启动之前,如何将数据发送到原始窗口中的内容脚本?我希望窗口具有script.js能够使用的配置选项。 – Ferdz

+1

[此问题](http://stackoverflow.com/q/17567624/934239)应该提供充足的答案。 – Xan

+0

除上述之外,如果配置不依赖于选项卡,请考虑将其保存在'chrome.storage'中。 – Xan