firefox扩展难题

时间:2011-05-19 15:49:04

标签: javascript firefox firefox-addon

这令我感到困惑,我的代码:

        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,第二个警告正确版本。

但如果我拿出第一个警报,那么第二个警报就是让我无效!!!!

这没有任何意义。

1 个答案:

答案 0 :(得分:4)

关键是Firefox 4代码异步

AddonManager.getAddonByID("Mf@mafiaafire.com", function(addon) {
  // alert("My extension's version is r" + addon.version);
  this_version = addon.version;
});

表示,去获取这个插件的版本,当你得到它时,请在此处调用此函数告诉我。当你到达第一个警报时,插件管理器还没有得到它。由于在警报上单击“确定”之前需要一秒左右,因此在第二次警报到来时