标签组 - 任何API

时间:2012-10-10 19:55:37

标签: firefox-addon firefox-addon-sdk

有没有办法使用高级API来检测选项卡是否在活动的Panorama组中?至少在tabs模块中似乎没有提到选项卡所属的选项卡组。

3 个答案:

答案 0 :(得分:2)

目前还没有计划提供标签组api - Firefox中的“全景”功能并未被证明非常受欢迎,因此与其他功能相比可能没有多大好处。

答案 1 :(得分:1)

实际上还有一种方法。

我不知道如何使用SDK获取XUL标签,但我知道这是可能的,因为我记得有人发布了这样做的问题。也许@canuckistani你可以帮助我们获得xul tab

无论如何,只要您拥有tab,就可以访问它的属性_tabViewTabItem。从这里你可以做任何你想做的事。比如通过tab._tabViewTabItem.parent.id或更改群组ID来计算标签的组ID。

这是一些代码,前两行是非sdk代码。

var tab = gBrowser.tabContainer.childNodes[10]; //non sdk code
gBrowser.selectedTab = tab; //non sdk code
console.log(tab._tabViewTabItem.parent.id) //works both in sdk and non-sdk

注意:固定标签没有_tabViewTabItem属性。这就是你怎么知道它是否固定。

var tabs = gBrowser.tabContainer.childNodes;
for (var i=0; i<tabs.length; i++) {
  try {
   console.log(tabs[i]._tabViewTabItem.parent.id);
  } catch(ex) {
    console.warn('tab ' + i + ' ex:', ex);
    console.log('its probably pinned')
  }
}

答案 2 :(得分:1)

Tab Groups扩展程序使用SessionStore存储数据。

var tabData = JSON.parse(SessionStore.getTabValue(tab,"tabview-tab"));
console.log(tabData.groupID); // 3

有关组本身的数据存储在browser.xul对象(即ownerGlobal)中。特定于每个组的数据存储为“tabview-group”,其他数据存储为“tabview-groups”。

var groupsData = JSON.parse(SessionStore.getWindowValue(tab.ownerGlobal, 'tabview-groups'));
console.log(groupsData); // Object { nextID: 4,
                                    activeGroupId: 3,
                                    activeGroupName: "Third Group",
                                    totalNumber: 2 }

var groupData = JSON.parse(SessionStore.getWindowValue(tab.ownerGlobal, 'tabview-group'));
console.log(tabData[3].title); // Third Group