tabs.duplicate()

根据标签页的 ID 复制一个标签页。

这是一个返回 Promise 的异步函数。

语法

js
let duplicating = browser.tabs.duplicate(
  tabId,              // 整数
  duplicateProperties // 可选对象
)

参数

tabId

integer。要复制的标签页的 ID。

duplicateProperties 可选

object。一个描述如何复制标签页的对象。它包含以下属性:

index 可选

integer。新标签页在窗口中的位置。该值的范围限制为零到窗口中标签页的数量。

active 可选

boolean。标签页是否成为窗口中的活动标签页。不影响窗口是否被聚焦。默认为 true

返回值

一个 Promise,其会在复制标签页后兑现一个 tabs.Tab 对象,描述复制的标签页的详细信息。如果扩展具有 "tabs" 权限或匹配的主机权限Tab 对象只包含 urltitlefavIconUrl。如果发生任何错误,则该 promise 将以错误消息拒绝。

备注: 从 Firefox 68 开始,browser.tabs.duplicate() 返回的 promise 在标签页被复制后立即兑现。以前,promise 只有在标签页完全加载后才会兑现。

示例

复制第一个标签页,然后记录新创建的标签页的 ID:

js
function onDuplicated(tabInfo) {
  console.log(tabInfo.id);
}

function onError(error) {
  console.log(`发生错误:${error}`);
}

// 复制数组中的第一个标签页
function duplicateFirstTab(tabs) {
  console.log(tabs);
  if (tabs.length > 0) {
    let duplicating = browser.tabs.duplicate(tabs[0].id);
    duplicating.then(onDuplicated, onError);
  }
}

// 查询所有打开的标签页
let querying = browser.tabs.query({});
querying.then(duplicateFirstTab, onError);

示例扩展

浏览器兼容性

BCD tables only load in the browser

备注: 此 API 基于 Chromium 的 chrome.tabs API。此文档源自 Chromium 代码中的 tabs.json