11

Javascript を使用して、自分の Firefox 拡張機能のバージョン番号をプログラムで取得するにはどうすればよいですか?

私の拡張機能には、以下のようなバージョン番号を含む install.rdf ファイルがあります。<em:version>タグの内容を抽出したい。

<?xml version="1.0" encoding="UTF-8"?>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
 xmlns:em="http://www.mozilla.org/2004/em-rdf#">
  <Description about="urn:mozilla:install-manifest">
    ...
    <em:version>1.0</em:version>
    ...
  </Description>
</RDF>
4

4 に答える 4

12

Firefox 4 (Gecko 2) では API が変更されたため、Firefox 4 に移植する必要がある場合は、次のコードを使用します (ここから):

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);
}
于 2010-12-10T05:50:56.487 に答える
8

完全な答えは得られませんでしたが、Extended 拡張機能を見つけてソース コードを調べました。これは出発点として適切なように思われました。Google でいくつかのメソッドを調べたところ、MDC でこのスニペットが見つかりました。コードの重要な部分は次のようになります。

var gExtensionManager = Components.classes["@mozilla.org/extensions/manager;1"]
                        .getService(Components.interfaces.nsIExtensionManager);
var current = gExtensionManager.getItemForID("extension@guid.net").version;

extension@guid.net拡張機能の適切な IDに置き換える必要があります。

Firefox 4 では別のコードが必要です。他の回答を参照してください。

于 2009-07-06T18:37:10.983 に答える
1

アドオン SDK を使用すると、次のように簡単になります。

var version = require("sdk/self").version;

于 2015-12-03T11:47:17.123 に答える