Chrome扩展程序:有扩展程序编辑其web_accessible_resources

时间:2016-04-18 15:40:17

标签: javascript google-chrome google-chrome-extension

我需要在扩展名web_accessible_resources中保留一个JSON文件,以便内容脚本可以通过同步XHR读取它(同步部分很重要,这就是我使用XHR的原因)。 / p>

但是,此文件应该反映用户通过扩展程序接口所执行的操作,因此当用户更改某些内容时,后台页面会重写JSON文件(这可能是异步发生的)。这样,下次内容脚本读取文件时,它将是最新的。

扩展程序是否有办法修改其web_accessible_resources下列出的文件?

或者,作为最后一个资源,可以让扩展程序在文本编辑器中打开文件并让用户直接编辑它,但我担心这会让Chrome认为扩展程序正在受到损害并禁用它

2 个答案:

答案 0 :(得分:2)

无法修改扩展程序中文件的内容。

在这种情况下,您可以采用chrome.storage.onChanged事件。

  1. 您的背景页面会更新chrome.storage
  2. 中的信息
  3. 这会在内容脚本中触发chrome.storage.onChanged。您通过保存数据的本地副本来对此做出反应。您甚至不需要查询存储:事件中有新数据。
  4. 您可以同步访问本地数据副本。
  5. 这不解决内容脚本刚刚开始执行时拥有数据的问题,因为您必须最初异步填充它。但同步XHR是一个非常笨重的想法。

    涵盖了更多的想法here。他们中的任何一个都是非常复杂的黑客,而Chrome的official position is "won't happen"

    P.S。如果有人在这个问题上真正寻求对XHR的变量响应,可以使用chrome.webRequest API重定向到包含数据的data: URI;问题是URI本身必须同步构建/可用。

答案 1 :(得分:1)

我不认为这是可能的,因为这就是fileSystem API的原因。我不知道你的特殊用例,但是一旦扩展开始,是否有可能加载文件?在大多数情况下,加载应该在用户甚至可以进行交互之前完成。