如何获取不同选项卡的实例,以便我可以存储变量/执行特定于各个选项卡的操作

时间:2012-06-10 18:09:46

标签: javascript gwt firefox-addon

注意:我正在使用GWT构建firefox扩展

假设我有一个在浏览器的不同TAB上运行的类:

class TabRoutine{
  Element tab;
  static int tabData;

  public TabRoutine(Element tab){
    this.tab=tab;
  }

  public void tabMethod(){
    //Operation on tab
  }      
}

对于每个选项卡,我必须创建此类的实例,我希望在选项卡关闭后销毁该实例。因此,每个选项卡都有一个与之相关的int tabData。以下是我如何处理它:

我有与每个选项卡有关的文档元素(如果有帮助,我也有窗口对象)。因此,我决定使用

gBrowser.getBrowserForDocument(doc);

我的问题是这个浏览器元素我对标签是唯一的吗?我所暗示的是说我有2个文件doc1和doc2的标签。如果我将这些浏览器元素映射到TabRoutine的对象,每个单独的选项卡是否总是返回相同(和正确)的浏览器,以便我可以找到与其相关的对象?

请说明问题的某些方面是否不清楚,我会详细说明。非常感谢!

1 个答案:

答案 0 :(得分:0)

是的,每个<browser>元素都与特定标签相关联。但是它不受特定内容文档的约束 - 可以将不同的站点加载到同一选项卡中。您可能希望在扩展程序启动时浏览gBrowser.browsers collection。然后,只要打开或关闭标签,您就会收听TabOpen and TabClose events以获得通知(使用gBrowser.getBrowserForTab method获取与这些事件相关联的<browser>元素。)