tabbrowser¶
在早期版本的 Firefox 中,<xul:tabbrowser>
负责显示和管理窗口选项卡的内容。随着浏览器的演变,<xul:tabbrowser>
的职责不断增加。每个 Firefox 窗口都有一个 <xul:tabbrowser>
,可以使用 gBrowser
变量访问它。
目前,<xul:tabbrowser>
DOM 元素已不再存在,但我们在这里提到它,因为它经常与 gBrowser
互换使用,并且其他文档可能仍然会直接或间接地引用 <xul:tabbrowser>
。
gBrowser¶
gBrowser
是在 tabbrowser.js 中定义的一个 JavaScript 对象,它管理选项卡以及切换选项卡、添加选项卡、删除选项卡、了解选项卡切换等底层基础设施。 gBrowser
在浏览器窗口作用域中可用,每个浏览器窗口只有一个 gBrowser
。
gBrowser 的名称代表什么?¶
gBrowser
中的 g 代表什么?这是一个旧的 Mozilla 约定,g 代表 global(全局)。这是一种在变量名称内部指示某物是全局作用域的方式。在本例中,它对浏览器窗口是全局的,窗口的每个选项卡都将通过该窗口的 gBrowser
进行管理。
gBrowser
中的 browser 代表什么?browser 是一个知道如何渲染 Web 内容的元素。在其发展历程中的某个时刻,Firefox 没有选项卡。每个窗口都有一个浏览器。该单独的浏览器被称为 gBrowser
。新的 gBrowser
变量与旧变量具有相同的接口,但会将调用转发到当前的 selectedBrowser
,后者是一个实际的 <xul:browser>
元素。
tabbrowser、browser 和 gBrowser 之间的关系¶
<xul:browser>
是一个可以加载网页、发出 HTTP 请求并相应做出响应的 XUL 元素。它在概念上类似于 iframe
,但包含其他方法并具有更高的权限。在 Firefox 中,每个选项卡都与一个 <xul:browser>
相关联。
历史上,每个 Firefox 窗口都有一个 <xul:tabbrowser>
,可以使用 gBrowser
变量访问它。它可以包含多个选项卡,每个选项卡都与一个 <xul:browser>
相关联。
尽管 <xul:tabbrowser>
DOM 元素已被删除,但您仍然可以使用全局 gBrowser
与所有浏览器的选项卡进行交互。全局 gBrowser
仍然在名为 tabbrowser.js 的文件中定义,原因与历史相同。