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

我没有得到完整的答案,但我找到了扩展扩展并查看了源代码,因为它似乎是一个很好的起点,并且通过谷歌搜索其中的一些方法,我在 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 回答
1

Web 扩展中使用以下内容:

browser.runtime.getManifest().version
于 2017-11-03T14:32:18.953 回答