chrome.tabs
描述: |
使用 chrome.tabs API 与浏览器的标签页系统交互。您可以使用该 API 创建、修改和重新排列浏览器中的标签页。
|
可用版本: |
从 Chrome 5 开始稳定支持。
|
权限: |
大部分 chrome.tabs API 不需要任何权限就能使用。然而,
Tab 的
url 、title 和
favIconUrl
属性需要有 "tabs" 权限后才会给出。
|
清单文件
您不需要在扩展程序的清单文件中声明任何权限就能使用
chrome.tabs
的大多数方法和事件。然而,如果您需要访问
Tab
的
url
、title
或 favIconUrl
属性,您必须在清单文件中声明 "tabs"
权限,如下所示:
{
"name": "我的扩展程序",
...
"permissions": [
"tabs"
],
...
}
例子
您可以在
examples/api/tabs
目录中找到一些使用 chrome.tabs
API
操纵标签页的简单例子。有关其他例子以及查看源代码的帮助,请参见示例
类型
Tab
-
id
(
integer
)
-
标签页的标识符。标签页的标识符在浏览器会话中唯一。在某些情况下,标签页可能没有标识符,例如使用 sessions API 查询外来标签页时,此时可能存在会话标识符。
-
index
(
integer
)
-
标签页在所在窗口中的索引,从 0 开始。
-
windowId
(
integer
)
-
标签页所在窗口的标识符。
-
openerTabId
(
optional
integer
)
-
打开这一标签页的标签页标识符(如果存在的话),只有该标签页仍然存在时才会有这一属性。
-
highlighted
(
boolean
)
-
标签页是否高亮突出。
-
active
(
boolean
)
-
标签页是否是窗口中的活动标签页。(窗口不一定有焦点。)
-
pinned
(
boolean
)
-
标签页是否固定。
-
url
(
optional
string
)
-
标签页中显示的 URL,只有当扩展程序拥有 "tabs" 权限时该属性才会存在。
-
title
(
optional
string
)
-
标签页的标题,只有当扩展程序拥有 "tabs" 权限时该属性才会存在,如果标签页正在加载它也可能是空字符串。
-
favIconUrl
(
optional
string
)
-
标签页的收藏夹图标 URL,只有当扩展程序拥有 "tabs" 权限时该属性才会存在,如果标签页正在加载它也可能是空字符串。
-
status
(
optional
string
)
-
"loading"(正在加载)或 "complete"(完成)。
-
incognito
(
boolean
)
-
标签页是否在隐身窗口中。
-
width
(
optional
integer
)
-
标签页宽度,以像素为单位。
-
height
(
optional
integer
)
-
标签页高度,以像素为单位。
-
sessionId
(
optional
string
)
-
会话标识符,用于唯一标识由 sessions API 获取的标签页。
InjectDetails
要插入的脚本或 CSS 的详情。必须设置 code 和 file 属性中的某一个,而且不能同时设置。
-
code
(
optional
string
)
-
要插入的 JavaScript 或 CSS 代码。
-
file
(
optional
string
)
-
要插入的 JavaScript 或 CSS 文件。
-
allFrames
(
optional
boolean
)
-
如果 allFrames 为
true
,则意味着当前页面中的所有框架都要插入 JavaScript 或 CSS。默认情况下为 false
,只在顶层主框架中插入。
-
runAt
(
optional
enum of "document_start"
, "document_end"
, or "document_idle"
)
-
JavaScript 或 CSS 插入标签页的最早时间,默认为 "document_idle"。
方法
get
chrome.tabs.get(integer tabId, function callback)
获得指定标签页的有关详情。
参数
callback 参数应该指定一个如下形式的函数:
function(Tab tab) {...};
getCurrent
chrome.tabs.getCurrent(function callback)
获得当前调用脚本所在的标签页,如果在非标签页环境下调用则可能返回 undefined(例如,后台页面或弹出视图)。
参数
callback 参数应该指定一个如下形式的函数:
function(Tab tab) {...};
connect
runtime.Port chrome.tabs.connect(
integer tabId,
object connectInfo)
连接到指定标签页中的内容脚本,这样当前扩展程序在指定标签页中运行的每一个内容脚本都会产生 runtime.onConnect 事件。有关更多详情,请参见内容脚本的消息传递。
参数
-
connectInfo
(
optional
object
)
-
-
属性
-
name
(
optional
string
)
-
将传递给 onConnect 事件,用于监听连接事件的内容脚本。
sendRequest
sendRequest 已弃用。请使用 runtime.sendMessage。
chrome.tabs.sendRequest(integer tabId, any request, function responseCallback)
向指定标签页中的内容脚本发送一个消息,当发回响应时执行一个可选的回调函数。当前扩展程序在指定标签页中的每一个内容脚本都会收到 extension.onRequest 事件。
参数
-
responseCallback
(
optional
function
)
-
如果您指定了 responseCallback 参数,它应该指定一个如下形式的函数:
function(any response) {...};
-
response
(
any
)
-
请求处理程序发出的 JSON 响应对象。如果连接到指定标签页的过程中发生错误,将不传递参数调用回调函数,并将 runtime.lastError 设置为错误消息。
sendMessage
chrome.tabs.sendMessage(integer tabId, any message, function responseCallback)
向指定标签页中的内容脚本发送一个消息,当发回响应时执行一个可选的回调函数。当前扩展程序在指定标签页中的每一个内容脚本都会收到 runtime.onMessage 事件。
参数
-
responseCallback
(
optional
function
)
-
如果您指定了 responseCallback 参数,它应该指定一个如下形式的函数:
function(any response) {...};
-
response
(
any
)
-
请求处理程序发出的 JSON 响应对象。如果连接到指定标签页的过程中发生错误,将不传递参数调用回调函数,并将 runtime.lastError 设置为错误消息。
getSelected
getSelected 已弃用。请使用 query {active: true}
。
chrome.tabs.getSelected(integer windowId, function callback)
获取指定窗口中选定的标签页。
参数
-
windowId
(
optional
integer
)
-
默认为当前窗口。
callback 参数应该指定一个如下形式的函数:
function(Tab tab) {...};
getAllInWindow
getAllInWindow 已弃用。请使用 query {windowId: windowId}
。
chrome.tabs.getAllInWindow(integer windowId, function callback)
获取指定窗口中所有标签页的详情。
参数
-
windowId
(
optional
integer
)
-
默认为当前窗口。
callback 参数应该指定一个如下形式的函数:
function(array of Tab tabs) {...};
create
chrome.tabs.create(object createProperties, function callback)
创建一个新标签页。
参数
-
createProperties
(
object
)
-
-
属性
-
windowId
(
optional
integer
)
-
创建新标签页的窗口,默认为当前窗口。
-
index
(
optional
integer
)
-
标签页在窗口中的位置,提供的值如果超过0与窗口中标签页数目之间的范围,将会自动限定在这一范围。
-
url
(
optional
string
)
-
标签页中一开始打开的 URL。完整的 URL 必须包括协议(即 "http://www.google.com",而不能是 "www.google.com"),相对 URL 相对于扩展程序中的当前页面。默认为“打开新的标签页”页面。
-
active
(
optional
boolean
)
-
标签页是否应该成为窗口中的活动标签页,不影响窗口是否有焦点(参见 windows.update),默认为 true。
-
selected
(
optional
boolean
)
-
selected 已弃用。请使用 active。
标签页是否为窗口中的选定标签页,默认为 true。
-
pinned
(
optional
boolean
)
-
标签页是否应该固定,默认为 false。
-
openerTabId
(
optional
integer
)
-
打开这一标签页的标签页标识符。如果指定的话,该标签页必须与新创建的标签页在同一个窗口中。
-
callback
(
optional
function
)
-
如果您指定了 callback 参数,它应该指定一个如下形式的函数:
function(Tab tab) {...};
-
tab
(
Tab
)
-
有关新创建标签页的详情,会包含新标签页的标识符。
duplicate
chrome.tabs.duplicate(integer tabId, function callback)
复制标签页。
参数
-
tabId
(
integer
)
-
要复制的标签页的标识符。
-
callback
(
optional
function
)
-
如果您指定了 callback 参数,它应该指定一个如下形式的函数:
function(Tab tab) {...};
-
tab
(
optional
Tab
)
-
有关已复制标签页的详情,如果没有请求
"tabs"
权限的话 Tab 对象不会包含 url
、title
和 favIconUrl
。
query
chrome.tabs.query(object queryInfo, function callback)
获取具有指定属性的所有标签页,如果没有指定任何属性的话则获取所有标签页。
参数
-
queryInfo
(
object
)
-
-
属性
-
active
(
optional
boolean
)
-
标签页在窗口中是否为活动标签页。
-
pinned
(
optional
boolean
)
-
标签页是否固定。
-
highlighted
(
optional
boolean
)
-
标签页是否高亮突出。
-
currentWindow
(
optional
boolean
)
-
标签页是否在当前窗口中。
-
lastFocusedWindow
(
optional
boolean
)
-
标签页是否在前一个具有焦点的窗口中。
-
status
(
optional
enum of "loading"
, or "complete"
)
-
标签页是否已经加载完成。
-
title
(
optional
string
)
-
匹配页面标题的表达式。
-
url
(
optional
string
)
-
匹配标签页的 URL 表达式。注意:片段标识符不会匹配。
-
windowType
(
optional
enum of "normal"
, "popup"
, "panel"
, or "app"
)
-
标签页所在窗口的类型。
-
index
(
optional
integer
)
-
标签页在窗口中的位置。
callback 参数应该指定一个如下形式的函数:
function(array of Tab result) {...};
highlight
chrome.tabs.highlight(object highlightInfo, function callback)
高亮突出指定标签页。
参数
-
highlightInfo
(
object
)
-
-
属性
-
windowId
(
optional
integer
)
-
包含标签页的窗口。
-
tabs
(
array of integer or
integer
)
-
要高亮突出的一个或多个标签页的索引。
callback 参数应该指定一个如下形式的函数:
function(windows.Window window) {...};
update
chrome.tabs.update(integer tabId, object updateProperties, function callback)
修改标签页属性,updateProperties 中未指定的属性保持不变。
参数
-
tabId
(
optional
integer
)
-
默认为当前窗口的选定标签页。
-
updateProperties
(
object
)
-
-
属性
-
url
(
optional
string
)
-
标签页打开的 URL。
-
active
(
optional
boolean
)
-
标签页是否为活动标签页,不影响窗口是否有焦点(参见 windows.update)。
-
highlighted
(
optional
boolean
)
-
从当前选定项目中添加或删除标签页。
-
selected
(
optional
boolean
)
-
selected 已弃用。请使用 highlighted。
Whether the tab should be selected.
-
pinned
(
optional
boolean
)
-
标签页是否固定。
-
openerTabId
(
optional
integer
)
-
打开这一标签页的标签页标识符。如果指定的话,该标签页必须与新创建的标签页在同一个窗口中。
-
callback
(
optional
function
)
-
如果您指定了 callback 参数,它应该指定一个如下形式的函数:
function(Tab tab) {...};
-
tab
(
optional
Tab
)
-
有关更新后的标签页详情,如果没有请求 "tabs" 权限的话 Tab 对象不包含
url
、title
和 favIconUrl
。
move
chrome.tabs.move(integer or array of integer tabIds, object moveProperties, function callback)
将一个或多个标签页移动至所在窗口中的新位置,或者移动到新窗口中。注意,标签页只能在普通窗口(window.type === "normal")间移动。
参数
-
tabIds
(
integer or
array of integer
)
-
要移动的标签页或标签页列表。
-
moveProperties
(
object
)
-
-
属性
-
windowId
(
optional
integer
)
-
默认为该标签页所在窗口。
-
index
(
integer
)
-
标签页在窗口中的新位置,传递 -1 将会把标签页排在窗口的最后。
-
callback
(
optional
function
)
-
如果您指定了 callback 参数,它应该指定一个如下形式的函数:
function(Tab or array of Tab tabs) {...};
-
tabs
(
Tab or
array of Tab
)
-
有关移动后标签页的详情。
reload
chrome.tabs.reload(integer tabId, object reloadProperties, function callback)
重新加载标签页。
参数
-
tabId
(
optional
integer
)
-
要重新加载的标签页标识符,默认为当前窗口的选定标签页。
-
reloadProperties
(
optional
object
)
-
-
属性
-
bypassCache
(
optional
boolean
)
-
是否使用本地缓存,默认为 false。
-
callback
(
optional
function
)
-
如果您指定了 callback 参数,它应该指定一个如下形式的函数:
function() {...};
remove
chrome.tabs.remove(integer or array of integer tabIds, function callback)
关闭一个或多个标签页。
参数
-
tabIds
(
integer or
array of integer
)
-
要关闭的标签页或标签页列表。
-
callback
(
optional
function
)
-
如果您指定了 callback 参数,它应该指定一个如下形式的函数:
function() {...};
detectLanguage
chrome.tabs.detectLanguage(integer tabId, function callback)
检测某个标签页中内容的主要语言。
参数
-
tabId
(
optional
integer
)
-
默认为当前窗口的活动标签页。
callback 参数应该指定一个如下形式的函数:
function(string language) {...};
-
language
(
string
)
-
ISO 语言代码,例如
en
或 fr
。有关该方法支持的所有语言的完整列表,请参见 kLanguageInfoTable,将检查第二列到第四列并返回第一个非 NULL 值(除了简体中文返回 zh-CN),未知语言将返回 und
。
captureVisibleTab
chrome.tabs.captureVisibleTab(
integer windowId,
types.ImageDetails options,
function callback)
捕捉指定窗口中当前活动标签页的可见区域,您必须拥有标签页中打开的 URL 的主机权限。
参数
-
windowId
(
optional
integer
)
-
目标窗口,默认为当前窗口。
callback 参数应该指定一个如下形式的函数:
function(string dataUrl) {...};
-
dataUrl
(
string
)
-
包含捕捉到的标签页可视区域图像的数据URL,可以将一个 HTML 图像元素的 “src” 属性设为该参数的值来显示图像。
executeScript
chrome.tabs.executeScript(
integer tabId,
InjectDetails details,
function callback)
在页面中插入 JavaScript 代码。有关更多详情,请参节内容脚本文档中以编程方式插入部分。
参数
-
tabId
(
optional
integer
)
-
运行脚本的标签页标识符,默认为当前窗口的活动标签页。
-
callback
(
optional
function
)
-
在所有 JavaScript 代码执行完后调用。
如果您指定了 callback 参数,它应该指定一个如下形式的函数:
function(array of any result) {...};
-
result
(
optional
array of any
)
-
在插入的每一个框架中脚本的执行结果。
insertCSS
chrome.tabs.insertCSS(
integer tabId,
InjectDetails details,
function callback)
向一个页面中插入CSS。有关更多详情,请参节内容脚本文档中以编程方式插入部分。
参数
-
tabId
(
optional
integer
)
-
要插入CSS的标签页标识符,默认为当前窗口的活动标签页。
-
callback
(
optional
function
)
-
当所有CSS都已经被插入后调用。
如果您指定了 callback 参数,它应该指定一个如下形式的函数:
function() {...};
事件
onCreated
当标签页创建时产生。注意,当该事件发生时标签页的 URL 可能还没有设置,但是您可以处理 onUpdated 事件,在设置 URL 时收到通知。
addListener
chrome.tabs.onCreated.addListener(function callback)
参数
callback 参数应该指定一个如下形式的函数:
function(Tab tab) {...};
onUpdated
当标签页更新时产生。
addListener
chrome.tabs.onUpdated.addListener(function callback)
参数
callback 参数应该指定一个如下形式的函数:
function(integer tabId, object changeInfo, Tab tab) {...};
-
changeInfo
(
object
)
-
列出更新的标签页改变的状态。
-
属性
-
status
(
optional
string
)
-
标签页的状态,可以为 loading(正在加载)或 complete(完成)。
-
url
(
optional
string
)
-
标签页的 URL(如果已更改的话)。
-
pinned
(
optional
boolean
)
-
标签页新的固定状态。
-
favIconUrl
(
optional
string
)
-
标签页新的收藏夹图标 URL。
onMoved
当标签页在窗口中移动时产生。仅产生一次移动事件,代表用户的直接移动,其他标签页因此而随之移动并不产生此事件。当标签页在窗口间移动时不产生此事件,在这种情况下,请参见 onDetached。
addListener
chrome.tabs.onMoved.addListener(function callback)
参数
callback 参数应该指定一个如下形式的函数:
function(integer tabId, object moveInfo) {...};
onSelectionChanged
onSelectionChanged 已弃用。请使用 onActivated。
窗口中的选定标签页更改时产生。
addListener
chrome.tabs.onSelectionChanged.addListener(function callback)
参数
callback 参数应该指定一个如下形式的函数:
function(integer tabId, object selectInfo) {...};
-
tabId
(
integer
)
-
变成活动标签页的标签页标识符。
-
selectInfo
(
object
)
-
-
属性
-
windowId
(
integer
)
-
选定标签页更改的窗口标识符。
onActiveChanged
onActiveChanged 已弃用。请使用 onActivated。
窗口中的选定标签页更改时产生。注意,该事件产生时标签页的 URL 可能还没有设置,但是您可以监听 onUpdated 事件,当 URL 设置时收到通知。
addListener
chrome.tabs.onActiveChanged.addListener(function callback)
参数
callback 参数应该指定一个如下形式的函数:
function(integer tabId, object selectInfo) {...};
-
tabId
(
integer
)
-
变成活动标签页的标签页标识符。
-
selectInfo
(
object
)
-
-
属性
-
windowId
(
integer
)
-
选定标签页更改的窗口标识符。
onActivated
当窗口中的当前标签页更改时产生。注意,当该事件发生时标签页的 URL 可能还没有设置,但是您可以处理 onUpdated 事件,在设置 URL 时收到通知。
addListener
chrome.tabs.onActivated.addListener(function callback)
参数
callback 参数应该指定一个如下形式的函数:
function(object activeInfo) {...};
-
activeInfo
(
object
)
-
-
属性
-
tabId
(
integer
)
-
现在的活动标签页标识符。
-
windowId
(
integer
)
-
活动标签页更改的窗口标识符。
onHighlightChanged
onHighlightChanged 已弃用。请使用 onHighlighted。
窗口中高亮或选定标签页更改时产生。
addListener
chrome.tabs.onHighlightChanged.addListener(function callback)
参数
callback 参数应该指定一个如下形式的函数:
function(object selectInfo) {...};
-
selectInfo
(
object
)
-
-
属性
-
windowId
(
integer
)
-
标签页更改的窗口。
-
tabIds
(
array of integer
)
-
窗口中的所有高亮标签页。
onHighlighted
当窗口中的高亮或选定标签页更改时产生。
addListener
chrome.tabs.onHighlighted.addListener(function callback)
参数
callback 参数应该指定一个如下形式的函数:
function(object highlightInfo) {...};
-
highlightInfo
(
object
)
-
-
属性
-
windowId
(
integer
)
-
标签页改变的窗口。
-
tabIds
(
array of integer
)
-
窗口中的所有高亮标签页。
onDetached
当标签页从一个窗口中脱离时产生,例如当它在窗口间移动时。
addListener
chrome.tabs.onDetached.addListener(function callback)
参数
callback 参数应该指定一个如下形式的函数:
function(integer tabId, object detachInfo) {...};
onAttached
当标签页附加到一个窗口时产生,例如当它在窗口间移动时。
addListener
chrome.tabs.onAttached.addListener(function callback)
参数
callback 参数应该指定一个如下形式的函数:
function(integer tabId, object attachInfo) {...};
onRemoved
当标签页关闭时产生。
addListener
chrome.tabs.onRemoved.addListener(function callback)
参数
callback 参数应该指定一个如下形式的函数:
function(integer tabId, object removeInfo) {...};
-
removeInfo
(
object
)
-
-
属性
-
windowId
(
integer
)
-
包含已关闭标签页的窗口。
-
isWindowClosing
(
boolean
)
-
当标签页因为窗口关闭而关闭时为 true。
onReplaced
当标签页由于预呈现或即搜即得而被另一个标签页替换时产生。
addListener
chrome.tabs.onReplaced.addListener(function callback)
参数
callback 参数应该指定一个如下形式的函数:
function(integer addedTabId, integer removedTabId) {...};