假设我的扩展名中存有一个名为settings.json的JSON文件。我可以使用以下方式获取文件的URL:
chrome.extension.getURL("settings.json");
但是现在我有了URL,我如何实际加载该文件的内容,以便我可以JSON.parse它并使用它?我这样做的原因是有一个服务器组件,我想更容易在多个服务器上进行部署和测试(开发,登台,生产等)。或者,如果有一种方法可以向清单添加自定义属性。 json并访问它们,这也可以。
答案 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}}部分。