How do I programatically get my own Firefox extension's version number with Javascript?
My extension has an install.rdf file containing the version number similar to below. I want to extract the contents of the <em:version>
tag.
<?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>
In Firefox 4 (Gecko 2) the API has changed, so if you need to port to Firefox 4, this is the code (from 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);
}
I've not got the full answer, but I found the Extended extension and had a look at the source code as it seemed like a good starting point, and from Googling some of the methods in that I found this snippet on MDC . The key bit of code would seem to be this:
var gExtensionManager = Components.classes["@mozilla.org/extensions/manager;1"]
.getService(Components.interfaces.nsIExtensionManager);
var current = gExtensionManager.getItemForID("extension@guid.net").version;
You would have to replace extension@guid.net
with the appropriate ID for your extension.
Firefox 4 requires different code, see the other answer.
使用附加SDK,其简单性如下:
var version = require("sdk/self").version;
在Web Extensions中,使用以下命令:
browser.runtime.getManifest().version
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.