Firefox gBrowser.getBrowserForTab但没有gBrowser.getTabForBrowser?

时间:2010-07-30 17:41:06

标签: browser tabs firefox-addon

在Javascript for Firefox扩展程序中,您可以致电gBrowser.getBrowserForTab,但没有gBrowser.getTabForBrowser。所以我写了自己的并且它有效,我只是好奇我是否有任何理由不应该这样做,或者代码是否有任何问题。以下是我加载窗口时调用的init方法。

gBrowser.getTabForBrowser = function(browser) {
  for (var i=0; i<gBrowser.browsers.length; i++) {
    if (gBrowser.getBrowserAtIndex(i) === browser) {
      return gBrowser.tabContainer.getItemAtIndex(i);
    }
  }
  return null;
}

(或应该是gBrowser.prototype.getTabForBrowser = ...?)

1 个答案:

答案 0 :(得分:3)

据我所知,没有内置getTabForBrowser功能,所以你必须自己动手。但是,您的代码假定浏览器节点以与Tab节点相同的DOM顺序存储。我不能肯定地说这个假设是否会被打破,但考虑到标签可以被用户任意重新定位,这不是我所依赖的。

幸运的是,每个标签对象都有linkedBrowser属性。所以你可以像这样重写你的代码:

gBrowser.getTabForBrowser = function(browser) {
  var mTabs = gBrowser.mTabContainer.childNodes;
  for (var i=0, i<mTabs.length; i++) {
    if (mTabs[i].linkedBrowser == browser) {
      return mTabs[i];
    }
  }
  return null;
}