browser - Firefox Browser.get BrowserForTab 但没有 Browser.getTabFor 浏览器?

标签 browser tabs firefox-addon

在 Firefox 扩展的 Javascript 中,您可以调用 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 = ... ?)

最佳答案

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

幸运的是,每个选项卡对象都有一个 linkedBrowser属性(property)。所以你可以像这样重写你的代码:

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;
}

关于browser - Firefox Browser.get BrowserForTab 但没有 Browser.getTabFor 浏览器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3374056/

相关文章:

asp.net - 如何从服务器端启用 CORS?

javascript - onclick 网站中任意位置的 javascript,在新选项卡中打开另一个网站

javascript - 在 Firefox 附加组件 SDK 中使用 port.on 传递数据

javascript - 使用内容脚本定义全局变量

php - 通过机器人访问网站,但只有在浏览器/人类设置变量之后

javascript - 如何将从客户端浏览器抓取的数据保存到用户文件中?使用 Electron ?

html - 平铺一百个 1px 的方 block VS 平铺四个 25px 的方 block

jQuery 选项卡 - 内容出现在选项卡边框之外

jquery - 如何将 jQuery Ui Tab 获取到 "read"子级

javascript - 保存从 Firefox 扩展加载的图片