Firefox addon 在Firefox加载项中,选项卡指向窗口,反之亦然

Firefox addon 在Firefox加载项中,选项卡指向窗口,反之亦然,firefox-addon,Firefox Addon,在Firefox插件中,有没有从选项卡对象获取窗口对象的方法?反之亦然?例如,如果我得到一个TabClose事件,有没有办法得到关联的窗口对象?是的,在TabClose中,事件参数包含很多有用的内容: function tabclosee(e) { console.error('TabClose, e:', e); } gBrowser.tabContainer.addEventListener("TabAttrModified", tabclosee, false); 因此,在这幅图

在Firefox插件中,有没有从选项卡对象获取窗口对象的方法?反之亦然?例如,如果我得到一个TabClose事件,有没有办法得到关联的窗口对象?

是的,在TabClose中,事件参数包含很多有用的内容:

function tabclosee(e) {
  console.error('TabClose, e:', e);
}

gBrowser.tabContainer.addEventListener("TabAttrModified", tabclosee, false);

因此,在这幅图中,我们看到
e.view
DOMWindow
(xul窗口/chrome窗口)。target是tab元素,在关闭的情况下,HTMLWindow被破坏,因此
e.target.linkedBrowser
将为null,但在
TabSelect
中它不会为null,您可以像
e.target.linkedBrowser.contentWindow一样访问html窗口

如果希望从选项卡对象打开窗口,也可以这样做:
e.target.ownerDocument.defaultView
,这与上面的
e.view
相同

从该窗口,您可以访问以下所有选项卡:

if (aDOMWindow.gBrowser && aDOMWindow.gBrowser.tabContainer) {
 var tabs = aDOMWindow.gBrowser.tabContainer.childNodes;
 for (var t=0; t<tabs.length; t++) {
  var tab = tabs[t];
  var tab_linkedBrowser = tab.linkedBrowser;
  var tab_htmlWin = tab.linkedBrowser.contentWindow;
 }
}
if(aDOMWindow.gBrowser&&aDOMWindow.gBrowser.tabContainer){
var tabs=aDOMWindow.gBrowser.tabContainer.childNodes;

对于(var t=0;t谢谢!这很有帮助!