【问题标题】:Chrome extension content script access to extension frameChrome扩展内容脚本访问扩展框架
【发布时间】:2016-03-04 05:22:54
【问题描述】:

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

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

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

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

非常感谢您的帮助!

【问题讨论】:

  • 我对你的问题感到困惑。您能否编辑您的帖子并使其更清晰?看起来您想将数据从弹出页面发送到.. 什么?

标签: javascript html google-chrome google-chrome-extension content-script


【解决方案1】:

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

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

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

最后,Messaging/Storage 仅支持 JSON 可序列化的负载。这意味着您不能通过其他方式发送 DOM 节点。您只需要传达您的目的所需的最少数据并在弹出端构建 DOM。

【讨论】:

  • 非常感谢,我去看看。我遇到了另一个问题;在开始之前,如何从原始窗口将数据发送到内容脚本?我希望窗口具有 script.js 能够使用的配置选项。
  • This question 应该提供足够的答案。
  • 除上述之外,如果配置不依赖tab,可以考虑保留在chrome.storage中。
猜你喜欢
  • 2011-04-25
  • 2016-11-19
  • 2023-02-04
  • 2013-05-20
  • 2011-04-25
  • 1970-01-01
  • 2012-07-04
相关资源
最近更新 更多