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

How can I get instances of different tabs such that I can store variables / perform operations specific to respective tabs

本文关键字:选项 存储 我可以 变量 于各个 操作 执行 实例 获取 何获取      更新时间:2023-09-26

注意:我正在使用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 的对象,每个单独的选项卡是否总是返回相同(且正确)的浏览器,以便我可以找到与之相关的对象?

请告诉问题的某些方面是否不清楚,我会详细说明。多谢!

是的

,每个<browser>元素都与特定的选项卡相关联。但是,它不绑定到特定内容文档 - 可以将不同的站点加载到同一选项卡中。你可能希望在扩展启动时浏览gBrowser.browsers集合。然后,您将侦听TabOpenTabClose事件,以便在打开或关闭选项卡时收到通知(使用gBrowser.getBrowserForTab方法获取与这些事件关联的<browser>元素)。