2009-07-06 47 views
11

如何通過Javascript以編程方式獲得我自己的Firefox擴展的版本號?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> 

回答

8

我還沒有得到完整的答案,但我發現the Extended extension,並看看源代碼,因爲它似乎是一個很好的起點,並從谷歌上搜索一些方法,我發現this snippet on MDC。代碼的鍵位似乎是這樣的:

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

你將不得不與您的擴展相應的ID,以取代[email protected]

Firefox 4需要不同的代碼,請參閱其他答案。

+0

非常好。這是一個完整的答案!我確實需要初始化我自己的gExtensionManager對象。 – Mat 2009-07-06 20:08:49

+0

嗯,這不是一個完整的答案,因爲我真的不知道它會工作:) – robertc 2009-07-06 22:18:23

12

在Firefox 4(壁虎2)的API已經改變,所以如果你需要移植到Firefox 4,這是代碼(從here):

try { 
    // Firefox 4 and later; Mozilla 2 and later 
    Components.utils.import("resource://gre/modules/AddonManager.jsm"); 
    AddonManager.getAddonByID("[email protected]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("[email protected]"); 
    alert("My extension's version is " + addon.version); 
} 
1

通過插件SDK其簡單:

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

0

Web擴展使用以下命令:

browser.runtime.getManifest().version 
相關問題