如何确定Firefox中已加载所有选项卡?

时间:2011-07-01 04:48:55

标签: javascript-events tabs firefox-addon loading

我正在编写一个Firefox附加组件,我需要能够在加载所有选项卡后运行一些代码。

我尝试过类似的事情:

window.addEventListener("load", function(e) { 
   gBrowser.addEventListener("load", function(ee) {
      // code to run after all tabs have loaded

         // thank user for installing my add-on
         alert('Thank you for installing my add-on');

         // add tab to my website
         gBrowser.selectedTab = gBrowser.addTab("http://www.mywebsite.com/");

   }, true);
}, false);

但这不起作用,因为这将在加载后运行每个选项卡的代码。我想等到所有标签都加载完毕。我想在用户安装我的附加组件后重新启动Firefox时打印一条警告消息。我还想在我的网站上添加一个新标签。

我该怎么做?

1 个答案:

答案 0 :(得分:3)

我想你的意思是等到浏览器启动时恢复会话。发出sessionstore-windows-restored通知,您可以通过观察服务收听。像这样:

Cu.import("resource://gre/modules/XPCOMUtils.jsm");
var observer =
{
  QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nsIObserver]),
  observe: function(subject, topic, data)
  {
    observerService.removeObserver(observer, "sessionstore-windows-restored");
    addTabNow();
  }
};

var observerService = Components.classes["@mozilla.org/observer-service;1"]
                                .getService(Components.interfaces.nsIObserverService);
observerService.addObserver(observer, "sessionstore-windows-restored", false);