javascript - Chrome 扩展程序 : have extension edit its web_accessible_resources

标签 javascript google-chrome google-chrome-extension

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

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

扩展程序是否可以修改其 web_accessible_resources 下列出的文件?

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

最佳答案

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

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

  1. 您的后台页面会更新 chrome.storage 中的信息。
  2. 这会触发内容脚本中的 chrome.storage.onChanged。您可以通过保存数据的本地副本来对此使用react。您甚至不需要查询存储:事件中就有新数据可用。
  3. 您同步访问数据的本地副本。

这并不能解决内容脚本刚开始执行时获取数据的问题,因为您必须首先异步填充它。但同步 XHR 是一个非常笨拙的想法。

涵盖了更多想法 here 。不过,其中任何一个都是相当复杂的黑客行为,而 Chrome 的 official position is "won't happen" .

附注万一有人真正寻求对 XHR 的可变响应,可以使用 chrome.webRequest API 重定向到包含数据的 data: URI;问题是 URI 本身必须同步构造/可用。

关于javascript - Chrome 扩展程序 : have extension edit its web_accessible_resources,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36698561/

相关文章:

javascript - jQuery.load() 在 Firefox 下响应错误,在 Chrome 下工作正常

javascript - Chrome 扩展中的多个 JS 文件 - 如何加载它们?

google-chrome - 使用 Google Web Fonts 优先使用 SVG 字体

javascript - Chrome 扩展程序写入 Google 电子表格

javascript - Node JS 的 Promises 数组仍处于 <pending> 状态

javascript - Datepicker getDate 方法在第二次单击时起作用并显示先前选择的日期

javascript - Chrome Mobile 中的 localStorage 为 null

javascript - 表标题上的蒲公英数据表复选框

javascript - 代码在 jsFiddle 上运行良好但在本地系统上运行不正常

javascript - 页面更新触发功能(无限滚动)