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/runtime.html
Title: chrome.runtime - Google Chrome 扩展程序开发文档(非官方中文版)  •  Size: 93463

chrome.runtime

描述 使用 chrome.runtime API 获取后台页面、返回清单文件的详情、监听并响应应用或扩展程序生命周期内的事件,您还可以使用该 API 将相对路径的 URL 转换为完全限定的 URL。
可用版本 从 Chrome 22 开始稳定支持。
了解更多 管理应用的生命周期
事件页面

chrome.runtime 参考

类型

Port

允许与其他页面双向通信的对象。

Port 的属性

name ( string )

disconnect ( function )

onDisconnect ( events.Event )

onMessage ( events.Event )

postMessage ( function )

sender ( optional MessageSender )

只有当端口传递给 onConnect/onConnectExternal 监听器时才会存在该属性。

MessageSender

包含有关发送消息或请求的脚本上下文信息的对象。

MessageSender 的属性

tab ( optional tabs.Tab )

打开连接的 Tab(标签页),如果有的话。只有当连接从标签页或内容脚本中打开,并且接收方是扩展程序而不是应用时才会存在这一属性。

id ( optional string )

打开连接的扩展程序或应用的标识符(如果有的话)。

url ( optional string )

打开连接的页面或框架 URL(如果有的话),只有当连接从标签页或内容脚本打开时才会存在这一属性。

tlsChannelId ( optional string )

如果扩展程序或应用请求该属性并且可用,则为打开连接的网页的 TLS 通道标识符。

属性

lastError

chrome.runtime.lastError
lastError ( object )
如果发生错误,在 API 方法的回调函数执行的过程中将会定义该属性。

lastError 的属性

message ( optional string )

有关发生错误的详情。

id

chrome.runtime.id
id ( string )
扩展程序/应用的标识符。

方法

getBackgroundPage

chrome.runtime.getBackgroundPage(function callback)

获取当前扩展程序/应用中正在运行的后台网页的 JavaScript window 对象。如果后台网页是事件页面,系统会确保在调用回调函数前它已经加载。如果没有后台网页,将会设置错误信息。

参数

callback ( function )

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

function(window backgroundPage) {...};

backgroundPage ( optional window )

后台页面的 JavaScript window 对象。

getManifest

object chrome.runtime.getManifest()

从清单文件中返回有关应用或扩展程序的详情,返回的对象是完整清单文件序列化的结果。

返回值类型的属性

清单文件详情。

getURL

string chrome.runtime.getURL(string path)

将应用或扩展程序安装目录内的相对路径转换为完全限定的 URL。

参数

path ( string )

指向应用或扩展程序内资源的路径,相对于它的安装目录。

setUninstallUrl

chrome.runtime.setUninstallUrl(string url)

设置卸载时访问的 URL,可以用来清理服务器上的数据、进行分析以及实现调查。最多不能超过 255 个字符。

参数

url ( string )

reload

chrome.runtime.reload()

重新加载应用或扩展程序。

requestUpdateCheck

chrome.runtime.requestUpdateCheck(function callback)

为当前应用/扩展程序请求检查更新。

参数

callback ( function )

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

function(enum of "throttled", "no_update", or "update_available" status, object details) {...};

status ( enum of "throttled", "no_update", or "update_available" )

检查更新的结果。

details ( optional object )

如果更新可用的话,包含有关可用更新的更多信息。

属性

version ( string )

可用更新的版本。

restart

chrome.runtime.restart()

如果应用在信息亭模式下运行,则重新启动 Chrome OS 设备,否则不进行任何操作。

connect

Port chrome.runtime.connect(string extensionId, object connectInfo)

尝试连接到扩展程序/应用中其他的监听者(例如后台网页)或其他扩展程序/应用,该方法对于需要连接到它们的扩展程序进程的内容脚本非常有用。注意,该方法不能连接到内容脚本中的监听者,扩展程序可以通过 tabs.connect 连接到嵌入至标签页中的内容脚本。

参数

extensionId ( optional string )

您需要连接到的扩展程序/应用的标识符,如果省略,默认为您自己的扩展程序。

connectInfo ( optional object )

属性

name ( optional string )

将传递给监听连接事件的扩展程序进程的 onConnect 事件。

includeTlsChannelId ( optional boolean )

TLS 通道标识符是否会传递至 onConnectExternal 事件。

connectNative

Port chrome.runtime.connectNative(string application)

连接到计算机上的原生应用程序。

参数

application ( string )

要连接的已注册应用程序名称。

sendMessage

chrome.runtime.sendMessage(string extensionId, any message, object options, function responseCallback)

向扩展程序中的其他监听者(或另一个扩展程序/应用)发送单个请求。与 chrome.runtime.connect 类似,但是只发送具有可选回应的单个请求。onMessage 事件将在扩展程序的每一个页面中产生。注意,扩展程序不能使用该方法向内容脚本发送消息。要向内容脚本发送消息,请使用 tabs.sendMessage

参数

extensionId ( optional string )

您要连接的扩展程序标识符。如果省略,默认为您自己的扩展程序。

message ( any )

options ( optional object )

属性

includeTlsChannelId ( optional boolean )

TLS 通道标识符是否会传递至 onMessageExternal 事件。

responseCallback ( optional function )

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

function(any response) {...};

response ( any )

消息处理程序发送的 JSON 响应对象。如果连接到扩展程序的过程中发生错误,调用这一回调函数时将不传递参数,并将 lastError 设为错误消息。

sendNativeMessage

chrome.runtime.sendNativeMessage(string application, object message, function responseCallback)

向原生应用程序发送单个消息。

参数

application ( string )

原生消息通信宿主的名称。

message ( object )

传递给原生消息通信宿主的消息。

responseCallback ( optional function )

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

function(any response) {...};

response ( any )

原生消息宿主发送的响应消息。如果连接到原生消息宿主的过程中发生错误,调用回调函数时不会传递参数,同时 lastError 将设置为错误消息。

getPlatformInfo

chrome.runtime.getPlatformInfo(function callback)

返回有关当前平台的信息。

参数

callback ( function )

调用时返回结果。

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

function(object platformInfo) {...};

platformInfo ( object )

属性

os ( enum of "mac", "win", "android", "cros", "linux", or "openbsd" )

当前运行 Chrome 浏览器的操作系统。

arch ( enum of "arm", "x86-32", or "x86-64" )

计算机的处理器架构。

nacl_arch ( enum of "arm", "x86-32", or "x86-64" )

Native Client 架构,在某些平台上可能和 arch 不同。

getPackageDirectoryEntry

chrome.runtime.getPackageDirectoryEntry(function callback)

返回包目录对应的 DirectoryEntry(目录项)。

参数

callback ( function )

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

function(directoryentry directoryEntry) {...};

directoryEntry ( directoryentry )

事件

onStartup

当安装了该扩展程序的配置文件第一次启动时产生。即使扩展程序以“分离式”隐身模式运行,启动隐身配置文件时也不会产生该事件。

addListener

chrome.runtime.onStartup.addListener(function callback)

参数

callback ( function )

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

function() {...};

onInstalled

当扩展程序第一次安装、更新至新版本或 Chrome 浏览器更新至新版本时产生。

addListener

chrome.runtime.onInstalled.addListener(function callback)

参数

callback ( function )

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

function(object details) {...};

details ( object )

属性

reason ( enum of "install", "update", or "chrome_update" )

分发这一事件的原因。

previousVersion ( optional string )

表示已更新扩展程序的前一个版本,只有当 reason 为 'update' 时才存在。

onSuspend

在事件页面即将卸载前发送,这样扩展程序就有机会进行清理。注意,由于页面即将卸载,处理该事件时开始的任何异步操作都不能保证完成。如果卸载前事件页面产生了更多活动,将产生 onSuspendCanceled 事件,并且事件页面不会卸载。

addListener

chrome.runtime.onSuspend.addListener(function callback)

参数

callback ( function )

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

function() {...};

onSuspendCanceled

在 onSuspend 之后发送,表示应用最终不会被卸载。

addListener

chrome.runtime.onSuspendCanceled.addListener(function callback)

参数

callback ( function )

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

function() {...};

onUpdateAvailable

当更新可用时产生,然而由于应用当前还在运行,不能立即安装。如果您什么都不做,更新将在后台网页下一次卸载时安装。如果您希望快点安装,您可以显式调用 reload

addListener

chrome.runtime.onUpdateAvailable.addListener(function callback)

参数

callback ( function )

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

function(object details) {...};

details ( object )

可用更新的清单文件详情。

属性

version ( string )

可用更新的版本号。

onBrowserUpdateAvailable

onBrowserUpdateAvailable 已弃用。请使用 onRestartRequired

当 Chrome 浏览器的更新可用,但是由于需要浏览器重新启动而没有立即安装时产生。

addListener

chrome.runtime.onBrowserUpdateAvailable.addListener(function callback)

参数

callback ( function )

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

function() {...};

onConnect

当连接从扩展程序进程或内容脚本中发起时产生。

addListener

chrome.runtime.onConnect.addListener(function callback)

参数

callback ( function )

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

function(Port port) {...};

port ( Port )

onConnectExternal

当连接从另一个扩展程序发起时产生。

addListener

chrome.runtime.onConnectExternal.addListener(function callback)

参数

callback ( function )

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

function(Port port) {...};

port ( Port )

onMessage

当消息从扩展程序进程或者内容脚本中发送时产生。

addListener

chrome.runtime.onMessage.addListener(function callback)

参数

callback ( function )

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

function(any message, MessageSender sender, function sendResponse) {...};

message ( optional any )

调用脚本发送的消息。

sender ( MessageSender )

sendResponse ( function )

当您产生响应时调用(最多一次)的函数,参数可以是任何可转化为 JSON 的对象。如果您在同一个文档中有一个以上的 onMessage 事件处理函数,只有其中一个可以发送响应。当事件处理函数返回时,该函数将失效,除非您在事件处理函数中返回 true,表示您希望通过异步方式发送响应(这样,与另一端之间的消息通道将会保持打开状态,直到调用了 sendResponse)。

监听器返回值

( boolean )
如果您需要在事件监听器返回后再调用 sendResponse 请在事件监听器中返回 true。

onMessageExternal

当消息从另一个扩展程序/应用发送时产生。不能在内容脚本中使用。

addListener

chrome.runtime.onMessageExternal.addListener(function callback)

参数

callback ( function )

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

function(any message, MessageSender sender, function sendResponse) {...};

message ( optional any )

调用脚本发送的消息。

sender ( MessageSender )

sendResponse ( function )

当您产生响应时调用(最多一次)的函数,参数可以是任何可转化为 JSON 的对象。如果您在同一个文档中有一个以上的 onMessage 事件处理函数,只有其中一个可以发送响应。当事件处理函数返回时,该函数将失效,除非您在事件处理函数中返回 true,表示您希望通过异步方式发送响应(这样,与另一端之间的消息通道将会保持打开状态,直到调用了 sendResponse)。

监听器返回值

( boolean )
如果您需要在事件监听器返回后再调用 sendResponse 请在事件监听器中返回 true。

onRestartRequired

应用或者运行它的设备需要重新启动时产生,应用应该尽早关闭所有窗口,以便开始重新启动。如果应用什么都不做,超过 24 小时的宽限期后会强制重新启动。目前,只有 Chrome OS 的 Kiosk 应用会产生该事件。

addListener

chrome.runtime.onRestartRequired.addListener(function callback)

参数

callback ( function )

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

function(enum of "app_update", "os_update", or "periodic" reason) {...};

reason ( enum of "app_update", "os_update", or "periodic" )

产生该事件的原因。由于应用更新至新版本而需要重新启动时使用 'app_update',由于浏览器/操作系统更新到新版本而需要重新启动时使用 'os_update',当系统运行的时间超过企业策略中设置的允许值时使用 'periodic'。