javascript – 关于配置首选项和js

我想知道是否有可能获得某些首选项的值设置在about:config使用javascript

奖励是获取我在用户登陆插件前端时创建的firefox插件中设置的首选项值.基本上,我正在尝试识别登陆FE的用户,而不要求他们明确登录.

解决方法:

是的你可以.

首先,您需要知道Mozilla使用XPCOM接口作为首选项系统.

三个使用的接口是nsIPrefService,nsIPrefBranch和nsIPrefBranch2.

首选项服务的实例化方式与实例化任何XPCOM service相同.

两个清楚的例子:

// 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);

我希望你用这个来解决你的疑问.

更多关于this page.

上一篇:在Java中管理配置(初始配置/保存/加载配置)


下一篇:myeclipse 打开源码乱码