1

我正在制作一个扩展,它应该只将一个链接作为用户输入一次。然后整个扩展继续在 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);

    }
}

instance 是我接受用户输入的全局变量。警报(实例)未显示,这意味着我保存首选项或提取它的方式存在一些问题。有人可以帮我解决这个问题。我以前从未使用过偏好。所以即使有小问题我也可能无法弄清楚。

4

2 回答 2

0

如果首选项是字符串,请使用 "pref_manager.getCharPref("prefname")"。您还可以拥有:

pref_manager.getBoolPref("prefname"); // 布尔(真/假)首选项

pref_manager.getIntPref("prefname"); // 数字

于 2010-09-16T12:53:47.657 回答
0

我现在没有自己的代码可供比较,但以上所有内容对我来说还可以。我的猜测是你的问题是你没有为你的偏好设置默认值,因为我认为Firefox 会忽略没有指定默认值的偏好。

看:

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

于 2010-07-28T03:44:36.007 回答