在Firefox Add-on SDK中打开一个紧邻当前标签页的新标签页

3
我正在尝试在Firefox插件中打开一个紧挨着当前标签页的新标签页。以下是我的代码:

var tabs = require("sdk/tabs");
tabs.open("http://www.google.com");

这将在选项卡列表末尾打开新标签页。我无法强制将新标签页定位在活动标签页之后。
2个回答

2

获取当前选项卡的索引,然后将新选项卡的索引设置为当前索引+ 1

var tabs = require("sdk/tabs");
var index = tabs.activeTab.index;
tabs.open("http://www.google.com");
tabs.activeTab.index = index + 1;

或者,如果您查看文档,您会发现有一个名为的构造函数参数

inBackground: 布尔值。如果存在且为true,则新标签将在活动标签右侧打开,并且不会处于活动状态。

通过将其与onOpen事件结合使用,您可以实现所需的效果:

var tabs = require("sdk/tabs");
tabs.open({
  url: "http://www.google.com",
  inBackground: true,
  onOpen: function(tab) {
    tab.activate();
  }
});

我没有测试过这两个,所以可能需要一些调试。


谢谢。第一个有效。第二个在选项卡位置方面具有默认行为(新选项卡在末尾打开)。inBackground: true 的唯一作用是将选项卡放到后台。 - MiJo
有趣。如果是这样的话,你应该提交一个bug,让他们知道。 - willlma
@MiJo和其他人。如果您遇到不一致的情况,阅读此错误报告是值得的。 - willlma
第一个对我不起作用,可能是因为tabs.open现在被异步调用 -附加组件sdk(2015)已经出现了一些变动。 我像这样让它工作: var tabs = require('sdk/tabs'); var index = tabs.activeTab.index; tabs.open({ url: "http://www.google.com", onOpen: function (tab) { tab.index = index+1; } }); - rosmcmahon

0
另一种方法是使用低级API,就像gtranslate does一样:
const { getMostRecentBrowserWindow } = require('sdk/window/utils')
const browser = getMostRecentBrowserWindow().gBrowser
const tab = browser.loadOneTab(url, {relatedToCurrent: true})
browser.selectedTab = tab

请注意,它可能与e10s无法正常工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接