Расширение FF: сохранение значения в настройках и получение в файле js - PullRequest
1 голос
/ 04 мая 2010

Я делаю расширение, которое должно принимать ссылку в качестве пользовательского ввода только один раз. Затем все расширение продолжает использовать эту ссылку на различные функции в файле JS. Когда пользователь изменяет его, значение, к которому обращается файл js, также изменяется соответствующим образом. Я использую следующее, но оно не работает для меня

var pref_manager = Components.classes["@mozilla.org/preferencesservice;1"].getService(Components.interfaces.nsIPrefService)

function setInstance(){

   if (pref_manager.prefHasUserValue("myvar"))
{
   instance = pref_manager.getString("myvar");

    alert(instance);
} 
    if(instance == null){

instance = prompt("Please enter webcenter host and port");

    // Setting the value
pref_manager.setString("myvar", instance);

    }
}

экземпляр - это глобальная переменная, в которой я принимаю пользовательский ввод. Предупреждение (экземпляр) не отображается, что означает, что существует проблема с сохранением или извлечением префа. Может кто-нибудь, пожалуйста, помогите мне с этим. Я никогда не работал с предпочтениями раньше. поэтому, даже если есть небольшие проблемы, я не смогу разобраться.

Ответы [ 2 ]

0 голосов
/ 16 сентября 2010

используйте «pref_manager.getCharPref (« prefname »)», если предпочтение - строка. Вы также можете иметь:

pref_manager.getBoolPref ( "prefname"); // логические (true / false) настройки

и

pref_manager.getIntPref ( "prefname"); // числа

0 голосов
/ 28 июля 2010

У меня нет собственного кода для сравнения прямо сейчас, но все вышеперечисленное выглядит нормально для меня. Я предполагаю, что ваша проблема в том, что вы не установили значение по умолчанию для своих предпочтений, потому что я думаю, Firefox будет игнорировать предпочтения без указания значения по умолчанию.

См:

https://developer.mozilla.org/en/Adding_preferences_to_an_extension

...