This page was saved using WebZIP 7.0.3.1030 offline browser on 12/24/13 11:31:36.
Address: https://crxdoc-zh.appspot.com/extensions/tabs.html
Title: chrome.tabs - Google Chrome 扩展程序开发文档(非官方中文版)  •  Size: 175184

chrome.tabs

描述 使用 chrome.tabs API 与浏览器的标签页系统交互。您可以使用该 API 创建、修改和重新排列浏览器中的标签页。
可用版本 从 Chrome 5 开始稳定支持。
权限 大部分 chrome.tabs API 不需要任何权限就能使用。然而, TaburltitlefavIconUrl 属性需要有 "tabs" 权限后才会给出。

清单文件

您不需要在扩展程序的清单文件中声明任何权限就能使用 chrome.tabs 的大多数方法和事件。然而,如果您需要访问 TaburltitlefavIconUrl 属性,您必须在清单文件中声明 "tabs" 权限,如下所示:

{
  "name": "我的扩展程序",
  ...
  "permissions": [
    "tabs"
  ],
  ...
}

例子

Two tabs in a window
您可以在 examples/api/tabs 目录中找到一些使用 chrome.tabs API 操纵标签页的简单例子。有关其他例子以及查看源代码的帮助,请参见示例

chrome.tabs 参考

类型

Tab

Tab 的属性

id ( integer )

标签页的标识符。标签页的标识符在浏览器会话中唯一。在某些情况下,标签页可能没有标识符,例如使用 sessions API 查询外来标签页时,此时可能存在会话标识符。

index ( integer )

标签页在所在窗口中的索引,从 0 开始。

windowId ( integer )

标签页所在窗口的标识符。

openerTabId ( optional integer )

打开这一标签页的标签页标识符(如果存在的话),只有该标签页仍然存在时才会有这一属性。

selected ( boolean )

selected 已弃用。请使用 Tab.highlighted

标签页是否选中。

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 属性中的某一个,而且不能同时设置。

InjectDetails 的属性

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)

获得指定标签页的有关详情。

参数

tabId ( integer )

callback ( function )

callback 参数应该指定一个如下形式的函数:

function(Tab tab) {...};

tab ( Tab )

getCurrent

chrome.tabs.getCurrent(function callback)

获得当前调用脚本所在的标签页,如果在非标签页环境下调用则可能返回 undefined(例如,后台页面或弹出视图)。

参数

callback ( function )

callback 参数应该指定一个如下形式的函数:

function(Tab tab) {...};

tab ( optional Tab )

connect

runtime.Port chrome.tabs.connect(integer tabId, object connectInfo)

连接到指定标签页中的内容脚本,这样当前扩展程序在指定标签页中运行的每一个内容脚本都会产生 runtime.onConnect 事件。有关更多详情,请参见内容脚本的消息传递

参数

tabId ( integer )

connectInfo ( optional object )

属性

name ( optional string )

将传递给 onConnect 事件,用于监听连接事件的内容脚本。

sendRequest

sendRequest 已弃用。请使用 runtime.sendMessage

chrome.tabs.sendRequest(integer tabId, any request, function responseCallback)

向指定标签页中的内容脚本发送一个消息,当发回响应时执行一个可选的回调函数。当前扩展程序在指定标签页中的每一个内容脚本都会收到 extension.onRequest 事件。

参数

tabId ( integer )

request ( any )

responseCallback ( optional function )

如果您指定了 responseCallback 参数,它应该指定一个如下形式的函数:

function(any response) {...};

response ( any )

请求处理程序发出的 JSON 响应对象。如果连接到指定标签页的过程中发生错误,将不传递参数调用回调函数,并将 runtime.lastError 设置为错误消息。

sendMessage

chrome.tabs.sendMessage(integer tabId, any message, function responseCallback)

向指定标签页中的内容脚本发送一个消息,当发回响应时执行一个可选的回调函数。当前扩展程序在指定标签页中的每一个内容脚本都会收到 runtime.onMessage 事件。

参数

tabId ( integer )

message ( any )

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 )

callback 参数应该指定一个如下形式的函数:

function(Tab tab) {...};

tab ( Tab )

getAllInWindow

getAllInWindow 已弃用。请使用 query {windowId: windowId}

chrome.tabs.getAllInWindow(integer windowId, function callback)

获取指定窗口中所有标签页的详情。

参数

windowId ( optional integer )

默认为当前窗口

callback ( function )

callback 参数应该指定一个如下形式的函数:

function(array of Tab tabs) {...};

tabs ( array of Tab )

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 对象不会包含 urltitlefavIconUrl

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 表达式。注意:片段标识符不会匹配。

windowId ( optional integer )

父窗口标识符,或者为 windows.WINDOW_ID_CURRENT,表示当前窗口

windowType ( optional enum of "normal", "popup", "panel", or "app" )

标签页所在窗口的类型。

index ( optional integer )

标签页在窗口中的位置。

callback ( function )

callback 参数应该指定一个如下形式的函数:

function(array of Tab result) {...};

result ( array of Tab )

highlight

chrome.tabs.highlight(object highlightInfo, function callback)

高亮突出指定标签页。

参数

highlightInfo ( object )

属性

windowId ( optional integer )

包含标签页的窗口。

tabs ( array of integer or integer )

要高亮突出的一个或多个标签页的索引。

callback ( function )

callback 参数应该指定一个如下形式的函数:

function(windows.Window window) {...};

window ( windows.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 对象不包含 urltitlefavIconUrl

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 )

callback 参数应该指定一个如下形式的函数:

function(string language) {...};

language ( string )

ISO 语言代码,例如 enfr。有关该方法支持的所有语言的完整列表,请参见 kLanguageInfoTable,将检查第二列到第四列并返回第一个非 NULL 值(除了简体中文返回 zh-CN),未知语言将返回 und

captureVisibleTab

chrome.tabs.captureVisibleTab(integer windowId, types.ImageDetails options, function callback)

捕捉指定窗口中当前活动标签页的可见区域,您必须拥有标签页中打开的 URL 的主机权限

参数

windowId ( optional integer )

目标窗口,默认为当前窗口

options ( optional types.ImageDetails )

callback ( function )

callback 参数应该指定一个如下形式的函数:

function(string dataUrl) {...};

dataUrl ( string )

包含捕捉到的标签页可视区域图像的数据URL,可以将一个 HTML 图像元素的 “src” 属性设为该参数的值来显示图像。

executeScript

chrome.tabs.executeScript(integer tabId, InjectDetails details, function callback)

在页面中插入 JavaScript 代码。有关更多详情,请参节内容脚本文档中以编程方式插入部分。

参数

tabId ( optional integer )

运行脚本的标签页标识符,默认为当前窗口的活动标签页。

details ( InjectDetails )

需要运行的脚本详情。

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的标签页标识符,默认为当前窗口的活动标签页。

details ( InjectDetails )

要插入的CSS文本详情。

callback ( optional function )

当所有CSS都已经被插入后调用。

如果您指定了 callback 参数,它应该指定一个如下形式的函数:

function() {...};

事件

onCreated

当标签页创建时产生。注意,当该事件发生时标签页的 URL 可能还没有设置,但是您可以处理 onUpdated 事件,在设置 URL 时收到通知。

addListener

chrome.tabs.onCreated.addListener(function callback)

参数

callback ( function )

callback 参数应该指定一个如下形式的函数:

function(Tab tab) {...};

tab ( Tab )

有关已创建标签页的详情。

onUpdated

当标签页更新时产生。

addListener

chrome.tabs.onUpdated.addListener(function callback)

参数

callback ( function )

callback 参数应该指定一个如下形式的函数:

function(integer tabId, object changeInfo, Tab tab) {...};

tabId ( integer )

changeInfo ( object )

列出更新的标签页改变的状态。

属性

status ( optional string )

标签页的状态,可以为 loading(正在加载)或 complete(完成)。

url ( optional string )

标签页的 URL(如果已更改的话)。

pinned ( optional boolean )

标签页新的固定状态。

favIconUrl ( optional string )

标签页新的收藏夹图标 URL。

tab ( Tab )

给出更新后的标签页状态。

onMoved

当标签页在窗口中移动时产生。仅产生一次移动事件,代表用户的直接移动,其他标签页因此而随之移动并不产生此事件。当标签页在窗口间移动时不产生此事件,在这种情况下,请参见 onDetached

addListener

chrome.tabs.onMoved.addListener(function callback)

参数

callback ( function )

callback 参数应该指定一个如下形式的函数:

function(integer tabId, object moveInfo) {...};

tabId ( integer )

moveInfo ( object )

属性

windowId ( integer )

fromIndex ( integer )

toIndex ( integer )

onSelectionChanged

onSelectionChanged 已弃用。请使用 onActivated

窗口中的选定标签页更改时产生。

addListener

chrome.tabs.onSelectionChanged.addListener(function callback)

参数

callback ( function )

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 )

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 )

callback 参数应该指定一个如下形式的函数:

function(object activeInfo) {...};

activeInfo ( object )

属性

tabId ( integer )

现在的活动标签页标识符。

windowId ( integer )

活动标签页更改的窗口标识符。

onHighlightChanged

onHighlightChanged 已弃用。请使用 onHighlighted

窗口中高亮或选定标签页更改时产生。

addListener

chrome.tabs.onHighlightChanged.addListener(function callback)

参数

callback ( function )

callback 参数应该指定一个如下形式的函数:

function(object selectInfo) {...};

selectInfo ( object )

属性

windowId ( integer )

标签页更改的窗口。

tabIds ( array of integer )

窗口中的所有高亮标签页。

onHighlighted

当窗口中的高亮或选定标签页更改时产生。

addListener

chrome.tabs.onHighlighted.addListener(function callback)

参数

callback ( function )

callback 参数应该指定一个如下形式的函数:

function(object highlightInfo) {...};

highlightInfo ( object )

属性

windowId ( integer )

标签页改变的窗口。

tabIds ( array of integer )

窗口中的所有高亮标签页。

onDetached

当标签页从一个窗口中脱离时产生,例如当它在窗口间移动时。

addListener

chrome.tabs.onDetached.addListener(function callback)

参数

callback ( function )

callback 参数应该指定一个如下形式的函数:

function(integer tabId, object detachInfo) {...};

tabId ( integer )

detachInfo ( object )

属性

oldWindowId ( integer )

oldPosition ( integer )

onAttached

当标签页附加到一个窗口时产生,例如当它在窗口间移动时。

addListener

chrome.tabs.onAttached.addListener(function callback)

参数

callback ( function )

callback 参数应该指定一个如下形式的函数:

function(integer tabId, object attachInfo) {...};

tabId ( integer )

attachInfo ( object )

属性

newWindowId ( integer )

newPosition ( integer )

onRemoved

当标签页关闭时产生。

addListener

chrome.tabs.onRemoved.addListener(function callback)

参数

callback ( function )

callback 参数应该指定一个如下形式的函数:

function(integer tabId, object removeInfo) {...};

tabId ( integer )

removeInfo ( object )

属性

windowId ( integer )

包含已关闭标签页的窗口。

isWindowClosing ( boolean )

当标签页因为窗口关闭而关闭时为 true。

onReplaced

当标签页由于预呈现或即搜即得而被另一个标签页替换时产生。

addListener

chrome.tabs.onReplaced.addListener(function callback)

参数

callback ( function )

callback 参数应该指定一个如下形式的函数:

function(integer addedTabId, integer removedTabId) {...};

addedTabId ( integer )

removedTabId ( integer )