这令我感到困惑,我的代码:
var this_version=null;
try
{
// Firefox 4 and later; Mozilla 2 and later
Components.utils.import("resource://gre/modules/AddonManager.jsm");
AddonManager.getAddonByID("Mf@mafiaafire.com", function(addon) {
// alert("My extension's version is r" + addon.version);
this_version = 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("Mf@mafiaafire.com");
//alert("My extension's version is rr" + addon.version);
this_version = addon.version;
}
alert("aa:"+this_version);
/* #### End ### */
if (prefManager.getCharPref("extensions.mafiaafire.quickfilter_ver") != this_version)
{
//prefManager.setCharPref("extensions.mafiaafire.quickfilter_ver",this.version);
alert("bb:"+this_version);
//gBrowser.selectedTab = gBrowser.addTab(prefManager.getCharPref("extensions.mafiaafire.quickfilter_ver_change_url"));
}
我在FF 4上,第一个警报总是给我null,第二个警告正确版本。
但如果我拿出第一个警报,那么第二个警报就是让我无效!!!!
这没有任何意义。
答案 0 :(得分:4)
关键是Firefox 4代码异步。
AddonManager.getAddonByID("Mf@mafiaafire.com", function(addon) {
// alert("My extension's version is r" + addon.version);
this_version = addon.version;
});
表示,去获取这个插件的版本,当你得到它时,请在此处调用此函数告诉我。当你到达第一个警报时,插件管理器还没有得到它。由于在警报上单击“确定”之前需要一秒左右,因此在第二次警报到来时 。