gpt4 book ai didi

google-chrome - 如何在当前标签之后打开一个新标签?

转载 作者:行者123 更新时间:2023-12-04 22:48:42 25 4
gpt4 key购买 nike

我正在开发一个 chrome 扩展,我想打开一个新标签,但在用户打开的当前标签之后。这就是我试图做的:

function clickEvent(info, tab) {
update();
var url= "http://google.com";
var id = tab.id+1;
chrome.tabs.create({'url': url, 'index': id});
}

但创建的选项卡在 chrome 选项卡栏中的选项卡队列末尾打开。删除后 'index': id来自 chrome.tabs.create ,结果是一样的。我不知道我该如何解决这个问题。有谁能够帮助我?

最佳答案

听起来您正在创建一个“子”选项卡,在这种情况下,您应该同时设置 indexopenerTabId :

function addChildTab(url, parentTab) {
chrome.tabs.create({
'url': url,
'windowId': parentTab.windowId,
'index': parentTab.index + 1, // n.b. index not id
'openerTabId': parentTab.id // n.b. id not index
});
}

设置 openerTabId意味着新选项卡将正确关联为父选项卡的子选项卡,因此:
  • 如果在子选项卡处于事件状态时关闭它,父选项卡将成为事件选项卡(而不是子选项卡右侧的选项卡)。这使其行为与用户在新选项卡中打开的链接相同。
  • 在树中显示选项卡的扩展 will work properly .

  • 另见 https://code.google.com/p/chromium/issues/detail?id=67539添加了这个。

    注意:如果您在后台打开选项卡(通过传递 active:false ),则 parentTab.index + 1不太正确,理想情况下,您应该在 parentTab 的现有子(和孙子)标签之后插入新标签。 :

    function addBackgroundChildTab(url, parentTab) {
    chrome.tabs.query({'windowId': parentTab.windowId}, function(tabs) {
    var parentAndDescendentIds = {};
    parentAndDescendentIds[parentTab.id] = true;
    var nextIndex = parentTab.index + 1;
    while (nextIndex < tabs.length) {
    var tab = tabs[nextIndex];
    if (tab.openerTabId in parentAndDescendentIds) {
    parentAndDescendentIds[tab.id] = true;
    nextIndex++;
    } else {
    break;
    }
    }
    chrome.tabs.create({
    'url': url,
    'active': false,
    'windowId': parentTab.windowId,
    'index': nextIndex,
    'openerTabId': parentTab.id
    });
    });
    }

    但这对您的目的来说可能有点矫枉过正,在这种情况下,坚持使用 parentTab.index + 1因为在我的第一个代码示例中应该没问题。

    关于google-chrome - 如何在当前标签之后打开一个新标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13651461/

    25 4 0