Ответ 1
Да, вы можете.
Сначала вам нужно знать, что Mozilla использует интерфейсы XPCOM для системы настроек.
Три используемых интерфейса: nsIPrefService, nsIPrefBranch и nsIPrefBranch2.
Служба настроек создается таким же образом, как вы создаете службу XPCOM.
Два примера, чтобы сделать это ясно:
// Get the root branch
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefBranch);
.
// Get the "extensions.myext." branch
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefService);
prefs = prefs.getBranch("extensions.myext.");
И есть 3 типа предпочтений: строка, целое и логическое. Есть шесть методов в nsIPrefBranch, которые читают и записывают предпочтения: getBoolPref(), setBoolPref(), getCharPref(), setCharPref(), getIntPref() и setIntPref().
Дополнительные примеры:
// Get the "accessibility." branch
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefService).getBranch("accessibility.");
// prefs is an nsIPrefBranch.
// Look in the above section for examples of getting one.
var value = prefs.getBoolPref("typeaheadfind"); // get a pref (accessibility.typeaheadfind)
prefs.setBoolPref("typeaheadfind", !value); // set a pref (accessibility.typeaheadfind)
Вы также можете использовать сложные типы. Используя nsISupportsString, который используется для обработки строк в настройках, используйте это, когда значение предпочтения может содержать символы, отличные от ASCII.
Пример:
// prefs is an nsIPrefBranch
// Example 1: getting Unicode value
var value = prefs.getComplexValue("preference.with.non.ascii.value",
Components.interfaces.nsISupportsString).data;
// Example 2: setting Unicode value
var str = Components.classes["@mozilla.org/supports-string;1"]
.createInstance(Components.interfaces.nsISupportsString);
str.data = "some non-ascii text";
prefs.setComplexValue("preference.with.non.ascii.value",
Components.interfaces.nsISupportsString, str);
Надеюсь, вы решите свое сомнение в этом.
Подробнее о этой странице.