[英]How can a Firefox extension get its own version number programmatically?
如何使用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>
在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);
}
我沒有完整的答案,但是我找到了Extended擴展並看了一下源代碼,因為這似乎是一個不錯的起點,從谷歌搜索的一些方法中,我在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替換extension@guid.net。
Firefox 4需要不同的代碼,請參見其他答案。
使用附加SDK,其簡單性如下:
var version = require("sdk/self").version;
在Web Extensions中,使用以下命令:
browser.runtime.getManifest().version
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.