Это довольно странный подход, почему вы пытаетесь получить данные JSON таким сложным способом? Как насчет помещения его в файл data/definition.json
(затем правильно закодированный):
{
"aaa": 1000,
"bbb": {
"ccc": {
"ddd": "eee",
...
...
};
И считывание с использованием пакета request
:
var Request = require("request").Request;
var data = require("self").data;
Request({
url: data.url("definitions.json"),
onComplete: function(response)
{
dowork(response.json);
}
});
Но если вы действительно хотите получить доступ к данным на вкладке - Add-on SDK не разрешает прямой доступ к страницам контента с вашего расширения. Вы можете использовать пакет page-mod
, чтобы внедрить на эту страницу скрипт содержимого, который затем отправит данные обратно в расширение. Что-то вроде этого:
var PageMod = require("page-mod").PageMod;
PageMod({
include: data.url("def.htm"),
contentScriptWhen: 'end',
contentScript: 'self.postMessage(definition)',
onAttach: function onAttach(worker)
{
worker.on("message", function(data)
{
dowork(data);
});
}
});