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

Firefox addon 如何获取右键单击的非活动选项卡的选项卡索引?,firefox-addon,firefox-addon-restartless,Firefox Addon,Firefox Addon Restartless,谁可以获取触发选项卡上下文菜单的右键单击选项卡的选项卡索引。选项卡不是活动选项卡(不是所选索引的) 举个例子。无论右键单击哪个选项卡(活动/非活动),选项卡上下文菜单中的“关闭右侧选项卡”都有效。它如何获得正确的选项卡索引?侦听tabContextMenu元素的popupshown事件 由于这是一个无重启插件,我假设您已经有了对ChromeWindow的引用 var tabContextMenu=chromewin.document.getElementById(“tabContextMenu”

谁可以获取触发选项卡上下文菜单的右键单击选项卡的选项卡索引。选项卡不是活动选项卡(不是所选索引的


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

侦听
tabContextMenu
元素的
popupshown
事件

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

var tabContextMenu=chromewin.document.getElementById(“tabContextMenu”);
tabContextMenu.addEventListener(“popupshown”,function()){
var rightclickedtab=chromewin.TabContextMenu.contextTab;
//现在你想怎么做就怎么做
},假);
您还可以添加自己的菜单项,并侦听其
命令
事件


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

单击获取event.target(即
选项卡
元素),然后循环通过该选项卡元素的parentNode,该选项卡元素包含选项卡的子节点。然后在那里找到你的event.target

因此,单击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);
}
var foundAtIndex=-1;
var选项卡=event.target;
var tabContainer=tab.parentNode;
var tabs=tabContainer.childNodes;

对于(var i=0;我希望您….在
menupopup id=“tabContextMenu”
中似乎没有
contextTab
属性…未定义的
tabContextMenu
(注意大写字母t)是ChromeWindow的一个全局变量。我错过了…:)是的。。就是那个。。实际上
TabContextMenu.contextTab.\u tPos
是我想要的。。thank youevent.target是可能的,但当目标嵌套时,引入子菜单时会变得复杂。还涉及其他循环,例如,从一个API(
tabContainer.childNodes
)执行一个循环来获取索引,从另一个API(
gBrowser.getBrowserAtIndex(i).currentURI
)执行另一个循环(获取URL)似乎是一种浪费。除非我能从公司API获得
currentURI
!?请参阅此处的主题:有一个
.popupNode
属性,这样您就不会被子菜单弄乱:)请告诉我这是否有效谢谢。。。但是,啊,是的,不推荐使用,但他们有替代品:
menupopup属性triggerNode
这样行吗?我认为现在在菜单上会更好。