Расширение FF: глобальная переменная, которая сохраняется в течение нескольких экземпляров браузера до перезагрузки? - PullRequest
3 голосов
/ 04 мая 2010

Можем ли мы использовать глобальную переменную, которая сохраняется в нескольких экземплярах браузера (FF)? Я создаю расширение ff, которое должно взять имя хоста и порта у пользователя один раз, а затем выполнить соответствующие пункты меню, используя тот же хост и порт. Этот хост и порт должны оставаться одинаковыми, пока пользователь не сбросит их (для которых будет предоставлена ​​опция) При объявлении переменной как глобальной в файле JS она будет иметь значение null при каждом перезапуске браузера. Может кто-нибудь помочь мне с тем, как и где сохранить эту переменную, чтобы получить желаемую функциональность. Вот код для установки предпочтений. но у меня не работает

function setInstance() {
    if (pref_manager.prefHasUserValue("myvar")) {
        getString = pref_manager.getString("myvar");
        instance = getString;
    }
    if (instance == null) {
        instance = prompt("Please enter webcenter host and port");
        // Setting the values
        pref_manager.setString("myvar", instance);
        pref_manager.setIntPref("myintvar", 1);
    }
}

Эта функция вызывается, как только открывается опция меню расширения. instance - это глобальная переменная, в которую пользователь должен ввести только один раз до сброса

Ответы [ 2 ]

3 голосов
/ 28 декабря 2011

Это очень старый пост, но все же. В данном коде есть два бита, которые, кажется, не работают.

Этот фрагмент кода не будет работать для меня:

getString = pref_manager.getString("myvar");

Вместо этого я использовал приведенный ниже, и это работает для меня:

getString = pref_manager.getCharPref("myvar");

То же самое относится и к сеттеру. Это не сработает для меня:

pref_manager.setString("myvar", "mystring");

Но это так:

pref_manager.setCharPref("myvar", "mystring");

См .: http://www.rietta.com/firefox/Tutorial/prefs.html

3 голосов
/ 04 мая 2010

Вы можете сохранить его в настройках Firefox (поэтому он сохраняется в about: config и будет доступен при каждой загрузке Firefox).

var pref_manager = 
    Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);

// Setting the values
pref_manager.setCharPref("myvar", "mystring");
pref_manager.setIntPref("myintvar", 1);

// Getting the values
var getString = ""; // Default
if (pref_manager.prefHasUserValue("myvar"))
{
    getString = pref_manager.getCharPref("myvar");
}
var getInt = 0; // Default
if (pref_manager.prefHasUserValue("myintvar"))
{
    getInt = pref_manager.getIntPref("myintvar");
}

Дополнительную информацию можно найти на странице Центра разработчиков Mozilla для настроек и Добавление настроек на страницу расширения .

...