2010-05-04 14 views
1

Je crée une extension qui doit prendre un lien en entrée de l'utilisateur une seule fois. Ensuite, l'extension entière continue à utiliser ce lien sur diverses fonctions dans le fichier JS. Lorsque l'utilisateur le modifie, la valeur accessible par le fichier js change également en conséquence. J'utilise les éléments suivants, mais il ne fonctionne pas pour moiExtension FF: enregistrement d'une valeur dans les préférences et récupération dans le fichier 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 est la variable globale dans laquelle je prends l'entrée utilisateur. L'alerte (instance) n'apparaît pas, ce qui signifie qu'il y a un problème dans la façon dont je sauvegarde le pref ou l'extrait. Quelqu'un peut-il m'aider s'il vous plaît avec ceci. Je n'ai jamais travaillé avec des préférences avant. donc même s'il y a des problèmes mineurs je ne pourrais pas être capable de comprendre.

+0

Il est recommandé d'appeler Firefox * Fx * pour faire court: "Mozilla préfère que Firefox soit abrégé en Fx ou fx, bien qu'il soit souvent abrégé en FF". –

Répondre

0

Je n'ai pas mon propre code en face de moi pour comparer en ce moment, mais tout ce qui précède semble ok pour moi. Je suppose que votre problème est que vous n'avez pas défini une valeur par défaut pour votre préférence, car je pense Firefox ignorera les préférences sans une valeur par défaut spécifiée.

Voir:

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

0

utilisation "pref_manager.getCharPref (" prefName ")" si la préférence est une chaîne. Vous pouvez également avoir:

pref_manager.getBoolPref ("prefname"); // booléenne (true/false) préférences

et

pref_manager.getIntPref ("prefName"); // numéros

+0

Cela est vrai pour une chaîne ASCII. Si votre chaîne peut contenir Unicode, vous devrez vous amuser avec des valeurs complexes. – Neil