Получить версию надстройки Firefox из скрипта контента

Как я могу получить версию аддона Firefox в сценарии контента? Глобальный объект self доступен, но у него нет номера версии.


person Community    schedule 29.10.2014    source источник


Ответы (2)


Версия дополнения доступна в модуле self. который доступен только из аддон-скриптов.

var self = require('sdk/self');
var version = self.version;

Вы можете отправить версию в свои скрипты контента через передачу сообщений по портам. Метод для этого зависит от того, как были добавлены сценарии содержимого, как описано в Сценарии контента.

Если вы использовали PageMod, вы мог бы сделать это:

main.js

var pageMods = require("sdk/page-mod");
var self = require("sdk/self");

var pageMod = pageMods.PageMod({
  include: ['*'],
  contentScriptFile: self.data.url("content-script.js"),
  onAttach: function (worker) {
    worker.port.emit('version', self.version);
  }
});

content-script.js

self.port.on('version', function(version){
  alert(version);
});
person Community    schedule 29.10.2014
comment
Это работает, но я пытаюсь обновить версию var, и это не работает так, как мне кажется. Например, когда я делаю self.port.on(get-version, ver =› { version = ver; alert(version); }); Я получаю предупреждение с номером версии, но HTML по-прежнему 0.0.0, который я использовал для определения переменной версии в начале сценария содержимого. - person japtain.cack; 04.03.2016

Вы можете использовать параметр contentScriptOptions при присоединении воркеров (через page-mod, page-worker, метод tab attach и т. д.):

Передайте version скрипту содержимого через contentScriptOptions из дополнительного модуля (/lib/):

var worker=require("sdk/tabs").activeTab.attach({
        contentScriptFile:...,
        contentScriptOptions:{
                version: require("sdk/self").version
        }
}); 

Затем получите version как свойство self.options в скрипте содержимого (/data/):

var {version}=self.options;

Для уточнения: self в сценарии содержимого не совпадает с self через require("sdk/self"), используемым в модуле расширения. В последнем находится свойство аддона version, а не в сценарии контента.

person jongo45    schedule 29.10.2014