我需要在扩展名web_accessible_resources
中保留一个JSON文件,以便内容脚本可以通过同步XHR读取它(同步部分很重要,这就是我使用XHR的原因)。 / p>
但是,此文件应该反映用户通过扩展程序接口所执行的操作,因此当用户更改某些内容时,后台页面会重写JSON文件(这可能是异步发生的)。这样,下次内容脚本读取文件时,它将是最新的。
扩展程序是否有办法修改其web_accessible_resources
下列出的文件?
或者,作为最后一个资源,可以让扩展程序在文本编辑器中打开文件并让用户直接编辑它,但我担心这会让Chrome认为扩展程序正在受到损害并禁用它
答案 0 :(得分:2)
无法修改扩展程序中文件的内容。
在这种情况下,您可以采用chrome.storage.onChanged
事件。
chrome.storage
。chrome.storage.onChanged
。您通过保存数据的本地副本来对此做出反应。您甚至不需要查询存储:事件中有新数据。这不解决内容脚本刚刚开始执行时拥有数据的问题,因为您必须最初异步填充它。但同步XHR是一个非常笨重的想法。
涵盖了更多的想法here。他们中的任何一个都是非常复杂的黑客,而Chrome的official position is "won't happen"。
P.S。如果有人在这个问题上真正寻求对XHR的变量响应,可以使用chrome.webRequest
API重定向到包含数据的data:
URI;问题是URI本身必须同步构建/可用。
答案 1 :(得分:1)
我不认为这是可能的,因为这就是fileSystem API的原因。我不知道你的特殊用例,但是一旦扩展开始,是否有可能加载文件?在大多数情况下,加载应该在用户甚至可以进行交互之前完成。