说明
使用 chrome.tabs API 与浏览器的标签页系统进行交互。您可以使用此 API 在浏览器中创建、修改和重新排列标签页。
Tabs API 不仅提供用于操作和管理标签页的功能,还可以检测标签页的语言、截取屏幕截图,以及与标签页的内容脚本通信。
权限
大多数功能无需任何权限即可使用。例如:创建新标签页、重新加载标签页、导航到其他网址等。
开发者在使用 Tabs API 时应注意以下三项权限。
- “tabs”权限
此权限不授予对
browser.tabs命名空间的访问权限。而是授予扩展程序针对tabs.Tab实例上的四个敏感属性调用tabs.query()的能力:url、pendingUrl、title和favIconUrl。{ "name": "My extension", ... "permissions": [ "tabs" ], ... }- 主持人权限
主机权限允许扩展程序读取和查询匹配标签页的四个敏感
tabs.Tab属性。它们还可以使用tabs.captureVisibleTab()、scripting.executeScript()、scripting.insertCSS()和scripting.removeCSS()等方法直接与匹配的标签页互动。{ "name": "My extension", ... "host_permissions": [ "http://*/*", "https://*/*" ], ... }- “activeTab”权限
activeTab会在用户调用时向扩展程序授予当前标签页的临时主机权限。与主机权限不同,activeTab不会触发任何警告。{ "name": "My extension", ... "permissions": [ "activeTab" ], ... }
使用场景
以下部分演示了一些常见用例。
在新标签页中打开扩展程序页面
扩展程序的常见模式是在安装扩展程序后,在新标签页中打开新手入门页面。以下示例展示了如何执行此操作。
background.js:
browser.runtime.onInstalled.addListener(({reason}) => {
if (reason === 'install') {
browser.tabs.create({
url: "onboarding.html"
});
}
});
获取当前标签页
此示例演示了扩展程序的 Service Worker 如何从当前聚焦的窗口(如果没有任何 Chrome 窗口聚焦,则为最近聚焦的窗口)中检索活动标签页。这通常可以视为用户的当前标签页。
async function getCurrentTab() {
let queryOptions = { active: true, lastFocusedWindow: true };
// `tab` will either be a `tabs.Tab` instance or `undefined`.
let [tab] = await browser.tabs.query(queryOptions);
return tab;
}
function getCurrentTab(callback) {
let queryOptions = { active: true, lastFocusedWindow: true };
browser.tabs.query(queryOptions, ([tab]) => {
if (browser.runtime.lastError)
console.error(browser.runtime.lastError);
// `tab` will either be a `tabs.Tab` instance or `undefined`.
callback(tab);
});
}
将指定标签页静音
此示例展示了扩展程序如何切换给定标签页的静音状态。
async function toggleMuteState(tabId) {
const tab = await browser.tabs.get(tabId);
const muted = !tab.mutedInfo.muted;
await browser.tabs.update(tabId, {muted});
console.log(`Tab ${tab.id} is ${muted ? "muted" : "unmuted"}`);
}
function toggleMuteState(tabId) {
browser.tabs.get(tabId, async (tab) => {
let muted = !tab.mutedInfo.muted;
await browser.tabs.update(tabId, { muted });
console.log(`Tab ${tab.id} is ${ muted ? "muted" : "unmuted" }`);
});
}
点击后将当前标签页移至第一个位置
此示例展示了如何在拖动可能正在进行或可能未在进行时移动标签页。虽然此示例使用的是 browser.tabs.move,但对于在拖动过程中修改标签页的其他调用,您也可以使用相同的等待模式。
browser.tabs.onActivated.addListener(moveToFirstPosition);
async function moveToFirstPosition(activeInfo) {
try {
await browser.tabs.move(activeInfo.tabId, {index: 0});
console.log("Success.");
} catch (error) {
if (error == "Error: Tabs cannot be edited right now (user may be dragging a tab).") {
setTimeout(() => moveToFirstPosition(activeInfo), 50);
} else {
console.error(error);
}
}
}
browser.tabs.onActivated.addListener(moveToFirstPositionMV2);
function moveToFirstPositionMV2(activeInfo) {
browser.tabs.move(activeInfo.tabId, { index: 0 }, () => {
if (browser.runtime.lastError) {
const error = browser.runtime.lastError;
if (error == "Error: Tabs cannot be edited right now (user may be dragging a tab).") {
setTimeout(() => moveToFirstPositionMV2(activeInfo), 50);
} else {
console.error(error);
}
} else {
console.log("Success.");
}
});
}
向所选标签页的内容脚本传递消息
此示例演示了扩展程序的 Service Worker 如何使用 tabs.sendMessage() 与特定浏览器标签页中的内容脚本进行通信。
function sendMessageToActiveTab(message) {
const [tab] = await browser.tabs.query({ active: true, lastFocusedWindow: true });
const response = await browser.tabs.sendMessage(tab.id, message);
// TODO: Do something with the response.
}
扩展程序示例
如需查看更多 Tabs API 扩展程序演示,请探索以下任一内容:
类型
MutedInfo
标签页的静音状态以及上次状态更改的原因。
属性
-
extensionId
字符串 可选
更改了静音状态的扩展程序的 ID。如果上次静音状态发生变化的原因不是扩展程序,则不设置此属性。
-
已设为静音
布尔值
标签页是否已静音(无法播放声音)。即使标签页尚未播放或当前未播放声音,也可能会被静音。相当于是否显示“已静音”音频指示器。
-
reason
标签页静音或取消静音的原因。如果标签页的静音状态从未更改,则不设置。
MutedInfoReason
导致静音状态发生变化的事件。
枚举
"user"
用户输入操作设置了静音状态。
“capture”
标签页捕获已启动,强制更改为静音状态。
"extension"
由 extensionId 字段标识的扩展程序设置了静音状态。
Tab
属性
-
活跃
布尔值
标签页在其窗口中是否处于活动状态。不一定表示窗口处于聚焦状态。
-
audible
布尔值 (可选)
Chrome 45 及更高版本 browser.*(自 Chrome 148 起)该标签页在过去几秒内是否发出过声音(但如果同时处于静音状态,则可能听不到)。等同于是否显示“扬声器音频”指示器。
-
autoDiscardable
布尔值
Chrome 54 及更高版本 browser.*(自 Chrome 148 起)当资源不足时,浏览器是否可以自动舍弃该标签页。
-
已舍弃
布尔值
Chrome 54 及更高版本 browser.*(自 Chrome 148 起)标签页是否已被舍弃。舍弃的标签页是指其内容已从内存中卸载,但仍显示在标签栏中的标签页。其内容会在下次激活时重新加载。
-
favIconUrl
字符串 可选
标签页网站图标的网址。仅当扩展程序具有
"tabs"权限或具有页面的主机权限时,此属性才会存在。如果标签页正在加载,则该值也可能为空字符串。 -
冻结
布尔值
Chrome 132+ browser.*(自 Chrome 148 起)标签页是否已冻结。冻结的标签页无法执行任务,包括事件处理脚本或计时器。它会显示在标签栏中,并且其内容会加载到内存中。激活后,该账号会解冻。
-
groupId
数值
Chrome 88 及更高版本 browser.*(自 Chrome 148 起)标签页所属分组的 ID。
-
高度
number 可选
标签页的高度(以像素为单位)。
-
突出显示
布尔值
标签页是否突出显示。
-
id
number 可选
标签页的 ID。标签页 ID 在浏览器会话中是唯一的。在某些情况下,标签页可能未分配 ID;例如,使用
sessionsAPI 查询外部标签页时,在这种情况下,可能会存在会话 ID。对于应用和开发者工具窗口,标签页 ID 也可以设置为chrome.tabs.TAB_ID_NONE。 -
无痕模式
布尔值
标签页是否位于无痕式窗口中。
-
索引
数值
标签页在其窗口中的索引(从零开始)。
-
lastAccessed
数值
Chrome 121 及更高版本 browser.*(自 Chrome 148 起)该标签页上次在其窗口中变为活动状态的时间(以自公元纪年开始计算的毫秒数表示)。
-
mutedInfo
MutedInfo 可选
Chrome 46 及更高版本 browser.*(自 Chrome 148 起)标签页的静音状态以及上次状态更改的原因。
-
openerTabId
number 可选
打开此标签页的标签页的 ID(如果有)。仅当打开标签页仍然存在时,此属性才会存在。
-
pendingUrl
字符串 可选
Chrome 79 及更高版本 browser.*(自 Chrome 148 起)标签页在提交之前要导航到的网址。仅当扩展程序具有
"tabs"权限或具有页面的主机权限,并且存在待处理的导航时,此属性才会存在。 -
已固定
布尔值
标签页是否已固定。
-
已选择
布尔值
已弃用请使用
tabs.Tab.highlighted。指示标签页是否处于选中状态。
-
sessionId
字符串 可选
用于唯一标识从
sessionsAPI 获取的标签页的会话 ID。 -
splitViewId
number 可选
Chrome 140 及更高版本 browser.*(自 Chrome 148 起)标签页所属的拆分视图的 ID。
-
状态
TabStatus 可选
标签页的加载状态。
-
title
字符串 可选
标签页的标题。仅当扩展程序具有
"tabs"权限或具有页面的主机权限时,此属性才会存在。 -
网址
字符串 可选
标签页主框架的上次提交网址。仅当扩展程序具有
"tabs"权限或具有页面的主机权限时,此属性才会存在。如果标签页尚未提交,则可能为空字符串。另请参阅Tab.pendingUrl。 -
width
number 可选
标签页的宽度(以像素为单位)。
-
windowId
数值
包含该标签页的窗口的 ID。
TabStatus
标签页的加载状态。
枚举
"unloaded"
"loading"
"complete"
WindowType
窗口类型。
枚举
"normal"
"popup"
"panel"
"app"
"devtools"
ZoomSettings
定义如何处理标签页中的缩放更改以及在何种范围内处理。
属性
-
defaultZoomFactor
number 可选
Chrome 43 及更高版本 Chrome 148 及更高版本中的 browser.*用于在调用 tabs.getZoomSettings 时返回当前标签页的默认缩放级别。
-
模式
定义如何处理缩放更改,即哪个实体负责页面的实际缩放;默认值为
automatic。 -
范围
定义缩放更改是针对网页来源永久生效,还是仅在此标签页中生效;在
automatic模式下,默认值为per-origin,否则默认值为per-tab。
ZoomSettingsMode
定义如何处理缩放更改,即哪个实体负责页面的实际缩放;默认值为 automatic。
枚举
"automatic"
缩放更改由浏览器自动处理。
“manual”
替换对缩放更改的自动处理。onZoomChange 事件仍会分派,扩展程序负责监听此事件并手动缩放页面。此模式不支持 per-origin 缩放,因此会忽略 scope 缩放设置并假定为 per-tab。
"disabled"
停用标签页中的所有缩放功能。标签页会还原为默认缩放级别,并且所有尝试的缩放更改都会被忽略。
ZoomSettingsScope
定义缩放更改是针对网页来源持久生效,还是仅在此标签页中生效;在 automatic 模式下,默认值为 per-origin,否则默认值为 per-tab。
枚举
“per-origin”
缩放更改会在缩放页面的源中保留,即导航到同一源的所有其他标签页也会缩放。此外,per-origin 缩放更改会与源一起保存,这意味着,当导航到同一源中的其他网页时,这些网页都会缩放到相同的缩放比例。per-origin 范围仅在 automatic 模式下可用。
“per-tab”
缩放更改仅在此标签页中生效,其他标签页中的缩放更改不会影响此标签页的缩放。此外,per-tab 缩放更改会在导航时重置;在标签页中导航时,系统始终会以 per-origin 缩放比例加载网页。
属性
MAX_CAPTURE_VISIBLE_TAB_CALLS_PER_SECOND
每秒可调用 captureVisibleTab 的次数上限。captureVisibleTab 的开销很大,不应过于频繁地调用。
值
2
SPLIT_VIEW_ID_NONE
表示没有拆分标签页的 ID。
值
-1
TAB_ID_NONE
表示不存在浏览器标签页的 ID。
值
-1
TAB_INDEX_NONE
表示标签栏中没有标签页索引的索引。
值
-1
方法
captureVisibleTab()
browser.tabs.captureVisibleTab(
windowId?: number,
options?: ImageDetails,
): Promise<string>
截取指定窗口中当前活动标签页的可见区域。为了调用此方法,扩展程序必须具有 <all_urls> 权限或 activeTab 权限。除了扩展程序通常可以访问的网站之外,此方法还允许扩展程序捕获原本受限的敏感网站,包括 chrome:-scheme 页面、其他扩展程序的页面和 data: 网址。这些敏感网站只能通过 activeTab 权限捕获。只有在扩展程序已被授予文件访问权限的情况下,系统才会捕获文件网址。
参数
-
windowId
number 可选
目标窗口。默认为当前窗口。
-
选项
ImageDetails 可选
返回
-
Promise<string>
Chrome 88 及更高版本 browser.*(自 Chrome 148 起)
connect()
browser.tabs.connect(
tabId: number,
connectInfo?: object,
): runtime.Port
连接到指定标签页中的内容脚本。runtime.onConnect 事件会在当前扩展程序的指定标签页中运行的每个内容脚本中触发。如需了解详情,请参阅内容脚本消息传递。
参数
-
tabId
数值
-
connectInfo
对象(可选)
返回
-
可用于与在指定标签页中运行的内容脚本进行通信的端口。如果标签页关闭或不存在,则会触发端口的
runtime.Port事件。
参数
-
createProperties
对象
-
活跃
布尔值 (可选)
该标签页是否应成为窗口中的活动标签页。不会影响窗口是否获得焦点(请参阅
windows.update)。默认值为true。 -
索引
number 可选
标签页在窗口中的位置。提供的值会被限制在 0 到窗口中的标签页数量之间。
-
openerTabId
number 可选
打开此标签页的标签页的 ID。如果指定了此属性,则打开者标签页必须与新创建的标签页位于同一窗口中。
-
已固定
布尔值 (可选)
是否应固定标签页。默认设置为
false -
已选择
布尔值 (可选)
已弃用请使用有效。
该标签页是否应成为窗口中的所选标签页。默认设置为
true -
splitWithTabId
number 可选
Chrome 155 及更高版本要用于创建拆分视图的现有标签页的 ID。如果指定了“split-with”标签页,则该标签页必须满足以下条件:
- 该标签页不得是已拆分的标签页。
- 它必须与新创建的标签页位于同一窗口中。
- 如果指定了
windowId,则它必须与分屏标签页的窗口 ID 相同。 - 如果指定了
index,则它必须是与拆分标签页相邻的索引,并且会影响新创建的标签页的相对位置。
-
网址
字符串 可选
标签页最初导航到的网址。完全限定网址必须包含架构(即 'http://www.google.com',而不是 'www.google.com')。相对网址是相对于扩展程序中的当前网页而言的。默认为“新标签页”页面。
-
windowId
number 可选
要在其中创建新标签页的窗口。默认为当前窗口。
-
返回
-
Promise<Tab>
Chrome 88 及更高版本 browser.*(自 Chrome 148 起)
createSplit()
browser.tabs.createSplit(
tabIds: [number, number],
): Promise<number>
将两个现有标签页拆分为拆分视图。
参数
-
tabIds
[number, number]
一个数组,其中包含正好两个要配对到拆分视图中的标签页 ID。所有标签页都必须满足以下条件:
它们必须相邻。 这些窗口不得已处于拆分视图中。 它们必须具有匹配的
windowId、pinned和groupId状态。
返回
-
<number>
detectLanguage()
browser.tabs.detectLanguage(
tabId?: number,
): Promise<string>
检测标签页中内容的主要语言。
参数
-
tabId
number 可选
默认为当前窗口的活动标签页。
返回
-
Promise<string>
Chrome 88 及更高版本 browser.*(自 Chrome 148 起)
discard()
browser.tabs.discard(
tabId?: number,
): Promise<Tab | undefined>
从内存中舍弃标签页。舍弃的标签页仍会显示在标签栏中,并在激活时重新加载。
参数
-
tabId
number 可选
要舍弃的标签页的 ID。如果指定了此参数,系统会舍弃该标签页,除非该标签页处于活动状态或已被舍弃。如果省略,浏览器会舍弃最不重要的标签页。如果没有可舍弃的标签页,此操作可能会失败。
返回
-
Promise<Tab | undefined>
Chrome 88 及更高版本 browser.*(自 Chrome 148 起)在操作完成后解析。
参数
-
tabId
数值
要复制的标签页的 ID。
返回
-
Promise<Tab | undefined>
Chrome 88 及更高版本 browser.*(自 Chrome 148 起)
参数
-
tabId
数值
返回
-
Promise<Tab>
Chrome 88 及更高版本 browser.*(自 Chrome 148 起)
getCurrent()
browser.tabs.getCurrent(): Promise<Tab | undefined>
获取发出此脚本调用的标签页。如果从非标签页上下文(例如后台页面或弹出式视图)调用,则返回 undefined。
返回
-
Promise<Tab | undefined>
Chrome 88 及更高版本 browser.*(自 Chrome 148 起)
getZoom()
browser.tabs.getZoom(
tabId?: number,
): Promise<number>
获取指定标签页的当前缩放比例。
参数
-
tabId
number 可选
要从中获取当前缩放比例的标签页的 ID;默认为当前窗口的活动标签页。
返回
-
<number>
Chrome 88 及更高版本 browser.*(自 Chrome 148 起)在获取标签页的当前缩放比例后,使用该缩放比例进行解析。
getZoomSettings()
browser.tabs.getZoomSettings(
tabId?: number,
): Promise<ZoomSettings>
获取指定标签页的当前缩放设置。
参数
-
tabId
number 可选
要从中获取当前缩放设置的标签页的 ID;默认为当前窗口的活动标签页。
返回
-
Promise<ZoomSettings>
Chrome 88 及更高版本 browser.*(自 Chrome 148 起)使用标签页的当前缩放设置进行解析。
goBack()
browser.tabs.goBack(
tabId?: number,
): Promise<void>
返回上一页(如果有)。
参数
-
tabId
number 可选
要返回的标签页的 ID;默认为当前窗口中所选的标签页。
返回
-
承诺<void>
Chrome 88 及更高版本 browser.*(自 Chrome 148 起)
goForward()
browser.tabs.goForward(
tabId?: number,
): Promise<void>
前往下一页(如果有)。
参数
-
tabId
number 可选
要向前导航的标签页的 ID;默认为当前窗口中所选的标签页。
返回
-
承诺<void>
Chrome 88 及更高版本 browser.*(自 Chrome 148 起)
group()
browser.tabs.group(
options: object,
): Promise<number>
向指定分组添加一个或多个标签页;如果未指定分组,则将给定标签页添加到新创建的分组。
参数
-
选项
对象
-
createProperties
对象(可选)
用于创建群组的配置。如果已指定 groupId,则无法使用。
-
windowId
number 可选
新群组的窗口。默认为当前窗口。
-
-
groupId
number 可选
要将标签页添加到的分组的 ID。如果未指定,系统将创建一个新群组。
-
tabIds
number | [number, …number[]]
要添加到指定分组的标签页 ID 或标签页 ID 列表。
-
返回
-
<number>
highlight()
browser.tabs.highlight(
highlightInfo: object,
): Promise<windows.Window>
突出显示给定标签页,并聚焦于该组中的第一个标签页。如果指定的标签页当前处于活动状态,则此操作似乎不会执行任何操作。
参数
-
highlightInfo
对象
-
tabs
number | number[]
要突出显示的一个或多个标签页索引。
-
windowId
number 可选
包含标签页的窗口。
-
返回
-
Promise<windows.Window>
Chrome 88 及更高版本 browser.*(自 Chrome 148 起)
move()
browser.tabs.move(
tabIds: number | number[],
moveProperties: object,
): Promise<Tab | Tab[]>
将一个或多个标签页移至其窗口中的新位置或新窗口。请注意,标签页只能在普通窗口 (window.type === "normal") 之间移动。
参数
-
tabIds
number | number[]
要移动的标签页 ID 或标签页 ID 列表。
-
moveProperties
对象
-
索引
数值
窗口要移动到的位置。使用
-1可将标签页放置在窗口末尾。 -
windowId
number 可选
默认值为标签页当前所在的窗口。
-
参数
-
queryInfo
对象
-
活跃
布尔值 (可选)
标签页是否在其窗口中处于活动状态。
-
audible
布尔值 (可选)
Chrome 45 及更高版本 browser.*(自 Chrome 148 起)标签页是否可听。
-
autoDiscardable
布尔值 (可选)
Chrome 54 及更高版本 browser.*(自 Chrome 148 起)指定在资源不足时,浏览器是否可以自动舍弃标签页。
-
currentWindow
布尔值 (可选)
标签页是否位于当前窗口中。
-
已舍弃
布尔值 (可选)
Chrome 54 及更高版本 browser.*(自 Chrome 148 起)是否舍弃标签页。舍弃的标签页是指其内容已从内存中卸载,但仍显示在标签栏中的标签页。下次激活时,其内容会重新加载。
-
冻结
布尔值 (可选)
Chrome 132+ browser.*(自 Chrome 148 起)标签页是否已冻结。冻结的标签页无法执行任务,包括事件处理脚本或计时器。它会显示在标签栏中,并且其内容会加载到内存中。激活后,该账号会解冻。
-
groupId
number 可选
Chrome 88 及更高版本 browser.*(自 Chrome 148 起)标签页所在分组的 ID,对于未分组的标签页,则为
tabGroups.TAB_GROUP_ID_NONE。 -
突出显示
布尔值 (可选)
标签页是否突出显示。
-
索引
number 可选
标签页在其窗口中的位置。
-
lastFocusedWindow
布尔值 (可选)
标签页是否位于最后聚焦的窗口中。
-
已设为静音
布尔值 (可选)
Chrome 45 及更高版本 browser.*(自 Chrome 148 起)标签页是否已静音。
-
已固定
布尔值 (可选)
标签页是否已固定。
-
splitViewId
number 可选
Chrome 140 及更高版本 browser.*(自 Chrome 148 起)标签页所在的拆分视图的 ID,如果标签页不在拆分视图中,则为
tabs.SPLIT_VIEW_ID_NONE。 -
状态
TabStatus 可选
标签页加载状态。
-
title
字符串 可选
将网页标题与模式进行匹配。如果扩展程序没有该网页的
"tabs"权限或主机权限,系统会忽略此属性。 -
网址
字符串 | 字符串 [] 可选
将标签页与一个或多个网址格式进行匹配。片段标识符不匹配。如果扩展程序没有该网页的
"tabs"权限或主机权限,系统会忽略此属性。 -
windowId
number 可选
父窗口的 ID,或
windows.WINDOW_ID_CURRENT(表示当前窗口)。 -
windowType
WindowType 可选
标签页所在的窗口类型。
-
返回
-
Promise<Tab[]>
Chrome 88 及更高版本 browser.*(自 Chrome 148 起)
reload()
browser.tabs.reload(
tabId?: number,
reloadProperties?: object,
): Promise<void>
重新加载标签页。
参数
-
tabId
number 可选
要重新加载的标签页的 ID;默认为当前窗口中所选的标签页。
-
reloadProperties
对象(可选)
-
bypassCache
布尔值 (可选)
是否绕过本地缓存。默认为
false。
-
返回
-
承诺<void>
Chrome 88 及更高版本 browser.*(自 Chrome 148 起)
remove()
browser.tabs.remove(
tabIds: number | number[],
): Promise<void>
关闭一个或多个标签页。
参数
-
tabIds
number | number[]
要关闭的标签页 ID 或标签页 ID 列表。
返回
-
承诺<void>
Chrome 88 及更高版本 browser.*(自 Chrome 148 起)
sendMessage()
browser.tabs.sendMessage(
tabId: number,
message: any,
options?: object,
): Promise<any>
向指定标签页中的内容脚本发送一条消息。系统会在当前扩展程序的指定标签页中运行的每个内容脚本中触发 runtime.onMessage 事件。
参数
-
tabId
数值
-
私信
任意
要发送的消息。此消息应为可 JSON 化的对象。
-
选项
对象(可选)
返回
-
承诺<任何>
Chrome 99 及更高版本 browser.*(自 Chrome 148 起)Promise,其解析结果为内容脚本的响应。如果连接到指定标签页时出错,promise 将被拒绝。
setZoom()
browser.tabs.setZoom(
tabId?: number,
zoomFactor: number,
): Promise<void>
缩放指定标签页。
参数
-
tabId
number 可选
要缩放的标签页的 ID;默认为当前窗口的活动标签页。
-
zoomFactor
数值
新的缩放比例。如果值为
0,则会将标签页设置为其当前的默认缩放比例。大于0的值表示标签页的缩放比例(可能不是默认值)。
返回
-
承诺<void>
Chrome 88 及更高版本 browser.*(自 Chrome 148 起)在缩放比例更改后解析。
setZoomSettings()
browser.tabs.setZoomSettings(
tabId?: number,
zoomSettings: ZoomSettings,
): Promise<void>
为指定标签页设置缩放设置,这些设置定义了如何处理缩放更改。在标签页中导航时,这些设置会重置为默认值。
参数
-
tabId
number 可选
要更改缩放设置的标签页的 ID;默认为当前窗口的活动标签页。
-
zoomSettings
定义如何处理缩放更改以及在什么范围内处理。
返回
-
承诺<void>
Chrome 88 及更高版本 browser.*(自 Chrome 148 起)在缩放设置更改后解析。
ungroup()
browser.tabs.ungroup(
tabIds: number | [number, ...number[]],
): Promise<void>
从各自的分组中移除一个或多个标签页。如果任何群组变为空,则会被删除。
参数
-
tabIds
number | [number, …number[]]
要从各自标签页分组中移除的标签页 ID 或标签页 ID 列表。
返回
-
承诺<void>
unsplit()
browser.tabs.unsplit(
splitViewId: number,
): Promise<void>
将拆分视图中的标签页分离为独立标签页。
参数
-
splitViewId
数值
要分离的拆分视图的 ID。
返回
-
承诺<void>
update()
browser.tabs.update(
tabId?: number,
updateProperties: object,
): Promise<Tab | undefined>
修改标签页的属性。未在 updateProperties 中指定的属性不会被修改。
参数
-
tabId
number 可选
默认为当前窗口的所选标签页。
-
updateProperties
对象
-
活跃
布尔值 (可选)
标签页是否应处于活动状态。不会影响窗口是否获得焦点(请参阅
windows.update)。 -
autoDiscardable
布尔值 (可选)
Chrome 54 及更高版本 browser.*(自 Chrome 148 起)当资源不足时,浏览器是否应自动舍弃该标签页。
-
突出显示
布尔值 (可选)
在当前所选标签页中添加或移除标签页。
-
已设为静音
布尔值 (可选)
Chrome 45 及更高版本 browser.*(自 Chrome 148 起)是否应将标签页静音。
-
openerTabId
number 可选
打开此标签页的标签页的 ID。如果指定了此属性,则打开者标签页必须与此标签页位于同一窗口中。
-
已固定
布尔值 (可选)
是否应固定标签页。
-
已选择
布尔值 (可选)
已弃用请使用突出显示。
是否应选择该标签页。
-
网址
字符串 可选
标签页要导航到的网址。不支持 JavaScript 网址;请改用
scripting.executeScript。
-
返回
-
Promise<Tab | undefined>
Chrome 88 及更高版本 browser.*(自 Chrome 148 起)
事件
onActivated
browser.tabs.onActivated.addListener(
callback: function,
)
在窗口中的活动标签页发生变化时触发。请注意,触发此事件时,标签页的网址可能尚未设置,但您可以监听 onUpdated 事件,以便在设置网址时收到通知。
参数
-
callback
函数
callback参数如下所示:(activeInfo: object) => void
-
activeInfo
对象
-
tabId
数值
已变为活动状态的标签页的 ID。
-
windowId
数值
活动标签页发生更改的窗口的 ID。
-
-
onAttached
browser.tabs.onAttached.addListener(
callback: function,
)
当标签页附加到窗口时(例如,在窗口之间移动时)触发。
参数
-
callback
函数
callback参数如下所示:(tabId: number, attachInfo: object) => void
-
tabId
数值
-
attachInfo
对象
-
newPosition
数值
-
newWindowId
数值
-
-
onCreated
browser.tabs.onCreated.addListener(
callback: function,
)
在创建标签页时触发。请注意,触发此事件时,可能尚未设置标签页的网址和标签页组归属,但您可以监听 onUpdated 事件,以便在设置网址或将标签页添加到标签页组时收到通知。
onDetached
browser.tabs.onDetached.addListener(
callback: function,
)
当标签页与窗口分离时(例如,在窗口之间移动时)触发。
参数
-
callback
函数
callback参数如下所示:(tabId: number, detachInfo: object) => void
-
tabId
数值
-
detachInfo
对象
-
oldPosition
数值
-
oldWindowId
数值
-
-
onHighlighted
browser.tabs.onHighlighted.addListener(
callback: function,
)
当窗口中突出显示或选中的标签页发生变化时触发。
参数
-
callback
函数
callback参数如下所示:(highlightInfo: object) => void
-
highlightInfo
对象
-
tabIds
number[]
窗口中所有突出显示的标签页。
-
windowId
数值
标签页发生更改的窗口。
-
-
onMoved
browser.tabs.onMoved.addListener(
callback: function,
)
在标签页在窗口内移动时触发。系统只会触发一个移动事件,表示用户直接移动的标签页。对于因手动移动标签页而必须移动的其他标签页,系统不会触发移动事件。在窗口之间移动标签页时,不会触发此事件;如需了解详情,请参阅 tabs.onDetached。
参数
-
callback
函数
callback参数如下所示:(tabId: number, moveInfo: object) => void
-
tabId
数值
-
moveInfo
对象
-
fromIndex
数值
-
toIndex
数值
-
windowId
数值
-
-
onRemoved
browser.tabs.onRemoved.addListener(
callback: function,
)
在标签页关闭时触发。
参数
-
callback
函数
callback参数如下所示:(tabId: number, removeInfo: object) => void
-
tabId
数值
-
removeInfo
对象
-
isWindowClosing
布尔值
如果标签页因其父窗口关闭而关闭,则为 true。
-
windowId
数值
标签页已关闭的窗口。
-
-
onReplaced
browser.tabs.onReplaced.addListener(
callback: function,
)
当标签页因预渲染或即时加载而被另一个标签页替换时触发。
参数
-
callback
函数
callback参数如下所示:(addedTabId: number, removedTabId: number) => void
-
addedTabId
数值
-
removedTabId
数值
-
onUpdated
browser.tabs.onUpdated.addListener(
callback: function,
)
在标签页更新时触发。
参数
-
callback
函数
callback参数如下所示:(tabId: number, changeInfo: object, tab: Tab) => void
-
tabId
数值
-
changeInfo
对象
-
audible
布尔值 (可选)
Chrome 45 及更高版本 browser.*(自 Chrome 148 起)标签页的新有声状态。
-
autoDiscardable
布尔值 (可选)
Chrome 54 及更高版本 browser.*(自 Chrome 148 起)标签页的新自动舍弃状态。
-
已舍弃
布尔值 (可选)
Chrome 54 及更高版本 browser.*(自 Chrome 148 起)标签页的新舍弃状态。
-
favIconUrl
字符串 可选
标签页的新网站图标网址。
-
冻结
布尔值 (可选)
Chrome 132+ browser.*(自 Chrome 148 起)标签页的新冻结状态。
-
groupId
number 可选
Chrome 88 及更高版本 browser.*(自 Chrome 148 起)标签页的新分组。
-
mutedInfo
MutedInfo 可选
Chrome 46 及更高版本 browser.*(自 Chrome 148 起)标签页的新静音状态以及更改原因。
-
已固定
布尔值 (可选)
标签页的新固定状态。
-
splitViewId
number 可选
Chrome 140 及更高版本 browser.*(自 Chrome 148 起)标签页的新拆分视图。
-
状态
TabStatus 可选
标签页的加载状态。
-
title
字符串 可选
Chrome 48+ browser.*(自 Chrome 148 起)标签页的新标题。
-
网址
字符串 可选
标签页的网址(如果已更改)。
-
-
Tab
-
onZoomChange
browser.tabs.onZoomChange.addListener(
callback: function,
)
在标签页缩放时触发。
参数
-
callback
函数
callback参数如下所示:(ZoomChangeInfo: object) => void
-
ZoomChangeInfo
对象
-
newZoomFactor
数值
-
oldZoomFactor
数值
-
tabId
数值
-
zoomSettings
-
-