Загрузка актива, хранящегося в расширении Chrome - PullRequest
17 голосов
/ 15 сентября 2010

Допустим, у меня есть файл JSON, хранящийся в моем расширении с именем settings.json.Я могу получить URL-адрес файла, используя:

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

Но теперь, когда у меня есть URL-адрес, как мне на самом деле загрузить содержимое этого файла, чтобы я мог JSON.parse и использовать его?Причина, по которой я это делаю, заключается в том, что существует серверный компонент, и я хочу упростить развертывание и тестирование на нескольких серверах (dev, staging, production и т. Д.). Или, если есть способ добавить пользовательские атрибуты в манифест.JSON и доступ к ним, это также будет работать.

Ответы [ 2 ]

25 голосов
/ 15 сентября 2010

Если вы сделаете ваш 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)

2 голосов
/ 20 апреля 2012

Я могу убедиться, что запрос ресурса из XHR на фоновой странице работает, как описано ранее. Просто убедитесь, что добавили 'self' к connect-src части вашего content_security_policy.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...