在 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/