tabs
与浏览器标签系统进行交互。
备注:使用 Manifest V3 或更高版本时,通过 scripting
API 提供的方法来执行脚本、插入 CSS 和移除 CSS,这些方法分别是 scripting.executeScript()
、scripting.insertCSS()
和 scripting.removeCSS()
。
你可以使用该 API 获取一个已打开标签的列表并且使用各种标准过滤标签,并进行打开、刷新、移动、重载和移除操作。该 API 不能直接访问标签中的主机内容,但是你可以使用 tabs.executeScript()
或者 tabs.insertCSS()
API,来插入 JavaScript 和 CSS。
你可以在不需要任何特殊权限的情况下使用该 API 的大部分,除了:
-
要访问
Tab.url
、Tab.title
和Tab.favIconUrl
(或通过tabs.query()
过滤这些属性),需要具备"tabs"
权限,或者具备匹配Tab.url
的主机权限。- 自 Firefox 86 和 Chrome 50 起,基于主机权限访问这些属性得到了支持。在 Firefox 85 及更早版本中,则需要“tabs”权限。
-
使用
tabs.executeScript()
或者tabs.insertCSS()
你必须在目标标签拥有主机权限。
或者你可以仅仅只为当前的活动标签临时的获取这些权限并且仅仅只响应一个显示的用户行为,请查看 "activeTab"
的权限。
许多标签页操作使用标签页 id
。标签页 id
在浏览器会话内对每个标签页是唯一的。如果浏览器重启,那么它可以并且会重新使用标签页 id
。要在浏览器重启后仍与标签页关联信息,请使用 sessions.setTabValue()
。
类型
tabs.MutedInfoReason
-
指定一个标签被静音或被取消静音的原因。
tabs.MutedInfo
-
该对象包含一个布尔值指示该标签是否静音,以及最近一次状态改变的原因。
tabs.PageSettings
-
用于通过
tabs.saveAsPDF()
方法控制标签页如何渲染为 PDF。 tabs.Tab
-
该值包含了一个标签的信息。
tabs.TabStatus
-
指示某个标签是否已经加载完成
tabs.WindowType
-
包含该标签的窗口类型。
tabs.ZoomSettingsMode
-
定义缩放由浏览器控制或是扩展,或者禁用。
tabs.ZoomSettingsScope
-
定义缩放将对某个网址持续生效,或者仅仅只针对该标签。
tabs.ZoomSettings
属性
tabs.TAB_ID_NONE
-
给予非浏览器标签的一个特殊 ID 值(比如,在开发者工具中的标签)。
函数
tabs.captureTab()
-
创建一个数据 URL,编码给定标签页可见区域的图像。
tabs.captureVisibleTab()
-
创建一个数据 URL,编码指定窗口中当前活动标签页的可见区域的图像。
tabs.connect()
-
在扩展的后台脚本(或其他特权脚本,例如弹出脚本或选项页面脚本)与在指定标签页中运行的任何内容脚本之间建立消息连接。
tabs.create()
-
创建一个新标签。
tabs.detectLanguage()
-
检测标签页中内容的首选语言。
tabs.discard()
-
丢弃一个或多个标签页。
tabs.duplicate()
-
复制一个标签
tabs.executeScript()
(仅 Manifest V2)-
向一个页面注入脚本。
tabs.get()
-
取回制定标签的详细信息。
tabs.getAllInWindow()
已弃用-
获取指定窗口所有标签的详细信息。
tabs.getCurrent()
-
返回一个
tabs.Tab
。该对象包含了该脚本当前的宿主标签的信息。 tabs.getSelected()
已弃用-
获取在指定窗口被选定的标签。已弃用:请改用
tabs.query({active: true})
。 tabs.getZoom()
-
获取制定标签的缩放系数。
tabs.getZoomSettings()
-
获取指定标签的缩放设置。
tabs.goForward()
-
前进到下一页(如果有的话)。
tabs.goBack()
-
返回到上一页(如果有的话)。
tabs.hide()
实验性-
隐藏一个或多个标签页。
tabs.highlight()
-
高亮显示一个或多个标签。
tabs.insertCSS()
(仅 Manifest V2)-
向一个页面注入 CSS。
tabs.move()
-
移动一个或多个标签页到同一窗口的一个新的位置或是到不同窗口。
tabs.moveInSuccession()
-
修改一组标签页的顺序关系。
tabs.print()
-
打印激活的标签页的内容。
tabs.printPreview()
-
打开激活的标签页的打印预览。
tabs.query()
-
获取所有包含指定属性的标签,如果没有属性则获取所有标签。
tabs.reload()
-
重新加载标签页,可选择是否绕过本地 Web 缓存。
tabs.remove()
-
关闭一个或多个标签。
tabs.removeCSS()
(仅 Manifest V2)-
移除之前调用
tabs.insertCSS()
注入的 CSS。 tabs.saveAsPDF()
-
将当前页面保存为 PDF 格式。
tabs.sendMessage()
-
向一个指定标签的 content script 发送单个消息。
tabs.sendRequest()
已弃用-
向指定标签页的内容脚本发送单个请求。已弃用:请使用
tabs.sendMessage()
替代。 tabs.setZoom()
-
缩放指定标签。
tabs.setZoomSettings()
-
为一个制定标签设置缩放选项。
tabs.show()
-
显示一个或多个已经被隐藏的标签页。
tabs.toggleReaderMode()
-
切换指定标签页的阅读器模式。
tabs.update()
-
将标签页导航到新的 URL,或修改标签页的其他属性。
tabs.warmup()
-
准备标签页,以加快可能的后续切换速度。
事件
tabs.onActivated
-
当窗口活动标签改变时触发,注意当该消息触发时,标签地址可能没有被设置。
tabs.onActiveChanged
已弃用-
窗口中选定的标签页发生更改时触发。已弃用 :请使用
tabs.onActivated
代替。 tabs.onAttached
-
当一个标签被附加到一个窗口时触发,因为他可能在窗口间移动。
tabs.onCreated
-
当一个标签被创建时触发,注意当该事件触发时可能没有设置地址。
tabs.onDetached
-
当一个标签脱离一个窗口时被触发。
tabs.onHighlightChanged
已弃用-
在窗口中选定的或突出显示的标签页发生更改时触发。已弃用:请使用
tabs.onHighlighted
代替。 tabs.onHighlighted
-
当一个标签被高亮显示或是被选中时触发。
tabs.onMoved
-
当一个标签在一个窗口内移动时被触发。
tabs.onRemoved
-
当一个标签关闭时被触发。
tabs.onReplaced
-
当一个标签因为预载取代另一个标签时被触发。
tabs.onSelectionChanged
已弃用-
窗口中所选标签页更改时触发。已弃用:请使用
tabs.onActivated
代替。 tabs.onUpdated
-
当一个标签被更新时触发。
tabs.onZoomChange
-
当一个标签被缩放时触发
浏览器兼容性
BCD tables only load in the browser
示例扩展
- annotate-page
- apply-css
- beastify
- bookmark-it
- chill-out
- commands
- context-menu-copy-link-with-types
- contextual-identities
- cookie-bg-picker
- devtools-panels
- find-across-tabs
- firefox-code-search
- history-deleter
- imagify
- list-cookies
- menu-demo
- menu-labelled-open
- menu-remove-element
- open-my-page-button
- permissions
- session-state
- store-collected-images
- tabs-tabs-tabs
备注:此 API 基于 Chromium 的 chrome.tabs
API。本文档内容源自 Chromium 代码中的 tabs.json
。