如何获取右键单击非活动选项卡的选项卡索引?

时间:2014-10-05 18:38:24

标签: firefox-addon firefox-addon-restartless

获取用于触发标签上下文菜单的右键选项卡的标签索引的用户。标签不是有效标签(不是selectedIndex)?

举个例子。无论右键单击哪个选项卡(活动/非活动)选项卡,“选项卡”上下文菜单中的“关闭选项卡”都会起作用。它如何获得正确的选项卡索引?

2 个答案:

答案 0 :(得分:1)

收听popupshown元素的tabContextMenu事件。

由于这是一个无重启的插件,我假设你已经有了对ChromeWindow的引用。

var tabContextMenu = chromewin.document.getElementById("tabContextMenu");
tabContextMenu.addEventListener("popupshown", function(){
  var rightclickedtab = chromewin.TabContextMenu.contextTab;
  // now proceed as you wish
}, false);

您还可以添加自己的菜单项并聆听其command事件。

在任何情况下,请记得在卸载扩展程序时进行清理。

答案 1 :(得分:0)

如果单击,则使用event.target(即tab元素),然后遍历该选项卡元素的parentNode,该元素具有选项卡的childNoedes。然后在那里找到你的event.target?

所以lick add on click listeners并执行此操作:

var foundAtIndex = -1;
var tab = event.target;
var tabContainer = tab.parentNode;
var tabs = tabContainer.childNodes;
for (var i=0; i<tabs.length; i++) {
if (tabs[i] == tab) {
foundAtIndex = i;
break;
}
}

if (foundAtIndex !== -1) {
console.error('very weird, tab not found');
} else {
console.info('tab found at index:', foundAtIndex);
}