Работайте с модулем simple-prefs и экспортируйте значения в скрипт, который хранится в папке данных - PullRequest
2 голосов
/ 24 февраля 2012

В настоящее время я пытаюсь добавить некоторые настройки в дополнение к Firefox.Для этого я играю с новым модулем "simple-prefs".( Simple-Prefs в блоге Mozilla )

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

Допустим, у меня есть только один необязательный параметр в моем аддоне, булевский, тогда мой package.json будет выглядеть так:*

Вот мой файл main.js [ОБНОВЛЕНО]:

var pageMod = require("page-mod");
const data = require("self").data;
const prefSet = require("simple-prefs");  //Simple-prefs module

var option1 = prefSet.prefs.option1;     //get the value for option1

function onPrefChange(prefName) {        //Listen for changes

   var prefName = prefSet.prefs[prefName];
                      }

prefSet.on("option1", onPrefChange);


exports.main = function() {
  pageMod.PageMod({ 
    include: ["https://mail.google.com/*","http://mail.google.com/*"],
    contentScriptWhen: 'ready',
    contentScriptFile: [data.url("jquery.js"),data.url("script.js")],
    onAttach: function(worker)
        {
      worker.postMessage( option1 );
        }
    });
}

Как я могу получить значение, прикрепленное к «option1», и экспортировать его, чтобы вызвать его в моем «скрипте»Файл .js?

1 Ответ

2 голосов
/ 24 февраля 2012

Как обычно, контентные скрипты не имеют доступа к API - они могут только получать сообщения от скриптов вашего расширения . Здесь вы бы сделали:

pageMod.PageMod({ 
  include: ["https://mail.google.com/*","http://mail.google.com/*"],
  contentScriptWhen: 'ready',
  contentScriptFile: [data.url("jquery.js"),data.url("script.js")],
  onAttach: function(worker)
  {
    worker.postMessage(backtop);
  }
});

А в скрипте контента у вас будет следующий код:

self.on("message", function(data)
{
  alert("Received option value: " + data);
});

Это сообщение приходит асинхронно, что означает, что ваш скрипт контента не будет знать значение параметра изначально - но так работают скрипты контента.

...