浏览器和标签之间的高级别是什么?

时间:2011-09-15 19:25:06

标签: firefox-addon xul

使用firefox扩展程序时,我最终在使用tabbrowser时能够抓取selectedBrowserselectedTab

不知道这两个项目的高级定义(tab有文档吗?那么为什么tab没有浏览器属性?)

同样地,我发现自己想知道,如果将属性与用户当前正在做的事情联系起来,我是否会更好地使用gBrowser.selectedBrowser.MYSPECIALPROPERTY vs gBrowser.selectedTab.MYSPECIALPROPERTY

我通常需要一个browser,因为它有我想要使用的方法,因为我发现抓住浏览器和使用它们更容易,而不是抓住Tabs和很多它们,但我不知道喜欢在不完全理解原因的情况下优先选择其中一个的想法。

我也会发现自己想知道如何从selectedBrowser转到selectedTab或反之亦然,假设这些过渡中至少有一个甚至是有意义的。

这些问题在某种程度上是可以分开的,但我缺少一些关键的高层次理解,所以我不确定我是否能够提出其中一个问题并得到一个能够解决我的困惑的答案。

1 个答案:

答案 0 :(得分:1)

<tabbrowser><tabbox>的专用版本。通常,<tabbox>是选项卡和关联选项卡面板的集合。这里的选项卡实际上是一个标签页眉,你点击它切换到一个特定的标签,标签面板就是显示的内容(它是标签内容的容器)。选项卡和选项卡面板之间没有直接映射,它们恰好在各自的容器节点中具有相同的索引。至少这是因为标签可以通过linkedpanel attribute显式链接到特定面板这一事实而略显复杂的一般观点。

现在,<tabbrowser>每个标签面板中都有一个<browser>元素。但它使用与常规<tab>中相同的<tabbox>元素。由于<tab><browser>都可以在<tabbrowser>之外使用,因此您不会在其上找到任何特殊的API。这种API仅适用于<tabbrowser>

要获取特定标签页眉的浏览器,您可以使用tabbrowser.getBrowserForTab()。反过来更复杂(通常是不必要的)。如果您真的需要它,可以使用tabbrowser.getBrowserIndexForDocument()来获取浏览器的索引。然后,您可以通过tabbrowser.tabs.getItemAtIndex()获取相应的标签。

重复一遍:通常你会想要使用<browser>元素。没有理由看标签标题(除非你想重新排序它们或类似的东西)。