加载存储在chrome扩展中的资产

时间:2010-09-15 17:45:27

标签: google-chrome google-chrome-extension

假设我的扩展名中存有一个名为settings.json的JSON文件。我可以使用以下方式获取文件的URL:

chrome.extension.getURL("settings.json");

但是现在我有了URL,我如何实际加载该文件的内容,以便我可以JSON.parse它并使用它?我这样做的原因是有一个服务器组件,我想更容易在多个服务器上进行部署和测试(开发,登台,生产等)。或者,如果有一种方法可以向清单添加自定义属性。 json并访问它们,这也可以。

2 个答案:

答案 0 :(得分:25)

如果你使你的setting.js看起来像:

var settings =  {"param":value,...};

然后您可以将其包含在背景页面中并使用设置变量:

<script src="settings.js"></script>

如果你想在你的文件中使用纯json而不将其分配给任何变量,那么你可以使用XMLHttpRequest加载它:

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = handleStateChange; // Implemented elsewhere.
xhr.open("GET", chrome.extension.getURL('/config_resources/config.json'), true);
xhr.send();

或者如果你将jquery包含在你的项目中:

$.getJSON(chrome.extension.getURL('/config_resources/config.json'), function(settings) {
  //..
});

(仅当您从内容脚本访问文件时才需要使用chrome.extension.getURL,否则您只能使用相对路径/config_resources/config.json

答案 1 :(得分:2)

我可以验证在后台页面中从XHR请求资源的方式如前所述。请务必将“自我”添加到connect-src的{​​{1}}部分。