11
votes

Comment une extension Firefox peut-elle obtenir son propre numéro de version par programme?

Comment puis-je obtenir de manière programmative le numéro de version de Firefox Extension avec JavaScript?

Mon extension a un fichier Install.rdf contenant le numéro de version similaire à ci-dessous. Je veux extraire le contenu de la version étiquette. xxx


0 commentaires

4 Réponses :


8
votes

Je n'ai pas la réponse complète, mais j'ai trouvé Extension prolongée et a examiné Le code source tel qu'il semblait être un bon point de départ et de googler certaines des méthodes contenues dans ce que j'ai trouvé cet extrait sur MDC . La clé de code semble être ceci: xxx

vous devriez remplacer extension@guid.net avec l'identifiant approprié pour votre extension.

Firefox 4 nécessite un code différent, voir l'autre réponse.


4 commentaires

Excellent. C'est une réponse complète! J'ai dû initialiser mon propre objet GextryGanager.


Eh bien, ce n'était pas une réponse complète parce que je n'étais pas vraiment sûr que cela fonctionnerait :)


Je ne sais aucun avantage à le faire d'une manière ou d'une autre, mais c'est même plus court: let version = application.extensions.get ('extension @ id'). Version; (de < Un href = "http://stackoverflow.com/questions/1965310/deectting-firefox-extension-version" Titre = "Détection de la version de l'extension Firefox"> Stackoverflow.com/questions/1965310/... )


@MatrixFrom: L'API de carburant que vous mentionnez a également changé dans Firefox 4, car AddonManager API est maintenant asynchrone. Donc, aucun avantage pour cela, autrement que d'économiser quelques octets en échange d'une API moins testée et moins connue.



12
votes

dans Firefox 4 (Gecko 2) L'API a changé, donc si vous devez porter à Firefox 4, il s'agit du code (de ici ):

try {
    // Firefox 4 and later; Mozilla 2 and later
    Components.utils.import("resource://gre/modules/AddonManager.jsm");
    AddonManager.getAddonByID("extension-guid@example.org", function(addon) {
        alert("My extension's version is " + addon.version);
  });
}
catch (ex) {
    // Firefox 3.6 and before; Mozilla 1.9.2 and before
    var em = Components.classes["@mozilla.org/extensions/manager;1"]
             .getService(Components.interfaces.nsIExtensionManager);
    var addon = em.getItemForID("extension-guid@example.org");
    alert("My extension's version is " + addon.version);
}


5 commentaires

Un grand changement est que l'API Firefox 4 est asynchrone, tandis que Firefox 3 API est synchrone. Si vous avez besoin de blocage, mettez le code dépendant dans le rappel.


@CREND KING: C'est vrai et une solution de contournement imparfaite consiste à enregistrer le numéro de version quelque part dans l'extension lorsque l'extension démarre et récupérez de manière synchrone lorsque vous en avez besoin. Les appels asynchrones sont vraiment infectieux.


La version doit fonctionner correctement avec votre approche, car il s'agit d'une propriété de l'extension. Toutefois, lorsque vous essayez d'obtenir des informations associées à l'utilisateur, telles que l'emplacement installé de l'extension, vous ne pouvez pas contourner AddonManager ("Profd / Extensions / " n'est pas toujours correct).


Un moyen alternatif d'émuler un appel synchrone consiste à utiliser nsithread.processnextEvent ( ) . NSITHREADADMANAGER.CURENTTHADAD est le bon fil.


Merci, cela m'a aidé aussi. Alors des roches!



1
votes

avec add-on sdk c'est simple comme:

var version = nécessite ("sdk / self"). Version;


0 commentaires

1
votes

dans Extensions Web forts> Utilisez les éléments suivants:

browser.runtime.getManifest().version


0 commentaires