tabs.create()

创建一个新标签页。

这是一个异步函数,返回一个 Promise

语法

js
let creating = browser.tabs.create(
  createProperties   // object
)

参数

createProperties

object。用于为新标签页设置属性的对象。有关这些属性的更多信息,请参阅 tabs.Tab 文档。

active 可选

boolean。是否将标签页设置为窗口中的活动标签页。如果为 false,则无效。不会影响窗口是否获得焦点(请参阅 windows.update)。默认为 true

cookieStoreId 可选

string。使用此项来创建 cookie 存储 ID 为 cookieStoreId 的标签页。仅当扩展具有 "cookies" 权限时,此选项才可用。有关更多信息,请参阅 使用上下文身份

discarded 可选

boolean。是否创建标签页并使其在标签栏中可见,而无需将任何内容加载到内存中,这种状态称为丢弃。标签页的内容将在激活时加载。

index 可选

integer。标签页在窗口中应占据的位置。提供的值将被限制在零和窗口中的标签页数量之间。

muted 可选

boolean。是否应将标签页静音。默认为 false

openerTabId 可选

integer。打开此标签页的标签页的 ID。如果指定,则打开者标签页必须与新创建的标签页位于同一窗口中。

openInReaderMode 可选

boolean。如果为 true,则在 阅读模式 中打开此标签页。默认为 false

pinned 可选

boolean。是否应将标签页固定。默认为 false

selected 可选

boolean。是否应将标签页设置为窗口中的选中标签页。默认为 true

警告:此属性已弃用,在 Firefox 中不受支持。请改用 active

title 可选

string。标签页的标题。仅当使用 discarded 设置为 true 创建标签页时才允许。

url 可选

string。要初始导航到的标签页的 URL。默认为新标签页。

完全限定的 URL 必须包含方案(例如,'http://www.google.com' 而不是 'www.google.com')。

出于安全原因,在 Firefox 中,此项可能不是特权 URL。因此,传递任何以下 URL 都将失败

  • chrome: URL
  • javascript: URL
  • data: URL
  • file: URL(即文件系统上的文件。但是,要使用打包在扩展中的文件,请参阅下文)
  • 特权 about: URL(例如,about:configabout:addonsabout:debugging)。非特权 URL(例如,about:blank)是允许的。
  • 如果未提供 URL 值,则可以打开新标签页(about:newtab)。

要加载与扩展一起打包的页面,请指定一个以扩展的 manifest.json 文件开头的绝对 URL。例如:'/path/to/my-page.html'。如果省略前导 '/',则 URL 被视为相对 URL,不同的浏览器可能会构建不同的绝对 URL。

windowId 可选

integer。要在其中创建新标签页的窗口。默认为当前窗口。

返回值

一个 Promise,它将使用一个包含已创建标签页详细信息的 tabs.Tab 对象来解析。如果无法创建标签页(例如,因为 url 使用了特权方案),则 Promise 将以错误消息被拒绝。

browser.tabs.create() 返回的 Promise 在标签页创建完成后立即解析。标签页可能仍在加载中。要检测标签页何时加载完成,请在调用 tabs.create 之前监听 tabs.onUpdatedwebNavigation.onCompleted 事件。

示例

在新标签页中打开 "https://example.org"

js
function onCreated(tab) {
  console.log(`Created new tab: ${tab.id}`);
}

function onError(error) {
  console.log(`Error: ${error}`);
}

browser.browserAction.onClicked.addListener(() => {
  let creating = browser.tabs.create({
    url: "https://example.org",
  });
  creating.then(onCreated, onError);
});

扩展程序示例

浏览器兼容性

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