如何使用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>
答案 0 :(得分:12)
在Firefox 4(Gecko 2)中,API已更改,因此如果您需要移植到Firefox 4,这是代码(来自here):
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);
}
答案 1 :(得分:8)
我没有得到完整的答案,但我找到了the Extended extension并查看了源代码,因为它似乎是一个很好的起点,并且通过Google搜索我发现的一些方法{{ 3}}。代码的关键点似乎是:
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需要不同的代码,请参阅其他答案。
答案 2 :(得分:1)
使用附加SDK,其简单如下:
var version = require("sdk/self").version;
答案 3 :(得分:0)
在网络扩展程序中,使用以下内容:
browser.runtime.getManifest().version