1

我有一个插件在加载时监听某个 tabindex 编号,例如在 tabindex 3 中,但是如果用户关闭 1 或 2 或所有以前的选项卡,有办法知道 tabindex 3 现在是 1 或2?

4

1 回答 1

1

是的。索引将始终更新以表示从左到右的选项卡顺序,从 0 开始。如果删除索引 0、1 或 2 处的选项卡,则索引 3 处的原始选项卡将位于 2。

你可以自己测试一下:

window.addEventListener("load", function () {
    var container = gBrowser.tabContainer;
    container.addEventListener("TabSelect", function () {
        console.log("SELECT: " + gBrowser.selectedTab.linkedPanel
                            + " - " + gBrowser.tabContainer.selectedIndex);
    }, false);
    container.addEventListener("TabClose",  function () {
        window.setTimeout(function(){
           console.log("CLOSE: " + gBrowser.selectedTab.linkedPanel
              + " - " + gBrowser.tabContainer.selectedIndex);}, 2000)
    }, false);

}, false);

这会侦听 TabSelect 和 TabClos​​e 事件以显示它们的变化。setTimeout 是让选项卡关闭,因为事件在实际发生之前触发。

要对其进行测试,请打开 4 个选项卡并选择第 4 个选项卡。打开控制台,然后关闭第一个选项卡。你会看到它发生了变化。


如果您需要更“独特”的选项,您可以使用选项卡的linkedPanel id 来标识您想要的选项卡。虽然如果您将选项卡移动到不同的窗口,这会改变。

于 2013-10-21T16:21:00.290 回答