说明
使用 chrome.runtime
API 检索 Service Worker,返回有关清单的详细信息,以及监听和响应扩展程序生命周期中的事件。您还可以使用此 API 将网址的相对路径转换为完全限定的网址。
此 API 的大多数成员都不需要任何权限。connectNative()
、sendNativeMessage()
和onNativeConnect
需要此权限。
以下示例展示了如何在清单中声明 "nativeMessaging"
权限:
manifest.json:
{
"name": "My extension",
...
"permissions": [
"nativeMessaging"
],
...
}
概念和用法
Runtime API 提供了多种方法,可支持扩展程序在许多方面 可以使用:
- 消息传递
- 通过以下方法和事件,您的扩展程序不仅能与扩展程序中的不同上下文通信,也能与其他扩展程序通信:
connect()
,onConnect
,onConnectExternal
,sendMessage()
,onMessage
和onMessageExternal
。 此外,您的扩展程序还可以使用connectNative()
和sendNativeMessage()
。 。
- 访问扩展程序和平台元数据
- 通过这些方法,您可以检索关于扩展程序和
平台。此类别的方法包括
getManifest()
和getPlatformInfo()
。 - 管理扩展程序生命周期和选项
- 通过这些属性,您可以对扩展程序执行一些元操作,并显示选项页面。
此类别中的方法和事件包括:
onInstalled
、onStartup
,openOptionsPage()
,reload()
、requestUpdateCheck()
和setUninstallURL()
。 - 辅助实用程序
- 这些方法提供了实用功能,例如将内部资源表示法转换为
外部格式。此类别的方法包括
getURL()
。 - 自助服务终端模式实用程序
- 这些方法仅适用于 ChromeOS,主要用于支持自助服务终端实现。
此类别的方法包括
restart()
和restartAfterDelay()
`。
未封装的扩展程序的行为
当已解压的扩展程序被重新加载时,系统会将其视为一次更新。这意味着
chrome.runtime.onInstalled
事件将触发,原因为 "update"
。这个
当使用 chrome.runtime.reload()
重新加载扩展程序时包含该值。
使用场景
向网页添加图片
对于要访问其他网域上托管的资源的网页,必须指定相应资源的完整网址
(例如 <img src="https://example.com/logo.png">
)。在以下位置添加扩展程序素材资源也是如此:
网页。二者的区别在于,扩展程序的资源必须以网站的形式公开
访问的资源以及内容脚本通常负责注入
附加信息资源。
在本例中,该扩展程序会将 logo.png
添加到内容所在的网页,
脚本通过runtime.getURL()
被注入,用于创建
完全限定网址。但首先,必须在清单中将该资产声明为可通过网络访问的资源。
manifest.json:
{
...
"web_accessible_resources": [
{
"resources": [ "logo.png" ],
"matches": [ "https://*/*" ]
}
],
...
}
content.js:
{ // Block used to avoid setting global variables
const img = document.createElement('img');
img.src = chrome.runtime.getURL('logo.png');
document.body.append(img);
}
将数据从内容脚本发送到 Service Worker
扩展程序的内容脚本通常需要由扩展程序的其他部分管理的数据, 就像 Service Worker 一样。就像打开了两个浏览器窗口一样, 两个上下文无法直接访问彼此的值。相反,该扩展程序可以使用消息 来跨这些不同上下文进行协调。
在此示例中,内容脚本需要从扩展程序的 Service Worker 获取一些数据
并初始化其界面为了获取此数据,它会传递开发者定义的 get-user-data
消息
Service Worker,它以用户信息的副本作为响应。
content.js:
// 1. Send a message to the service worker requesting the user's data
chrome.runtime.sendMessage('get-user-data', (response) => {
// 3. Got an asynchronous response with the data from the service worker
console.log('received user data', response);
initializeUI(response);
});
service-worker.js:
// Example of a simple user data object
const user = {
username: 'demo-user'
};
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
// 2. A page requested user data, respond with a copy of `user`
if (message === 'get-user-data') {
sendResponse(user);
}
});
收集卸载方面的反馈
许多扩展程序都会使用卸载后调查问卷,来了解该扩展程序如何更好地满足其自身需求 并提高留存率以下示例展示了如何添加此功能。
background.js:
chrome.runtime.onInstalled.addListener(details => {
if (details.reason === chrome.runtime.OnInstalledReason.INSTALL) {
chrome.runtime.setUninstallURL('https://example.com/extension-survey');
}
});
示例
如需查看更多 Runtime API 示例,请参阅 Manifest V3 - 网络访问资源演示。
类型
ContextFilter
用于匹配特定扩展程序上下文的过滤器。匹配的上下文必须与所有指定的过滤条件匹配;未指定的任何过滤器将匹配所有可用的上下文。因此,“{}”过滤器将匹配所有可用上下文。
属性
-
contextIds
string[] 选填
-
contextTypes
ContextType[] 可选
-
documentIds
string[] 选填
-
documentOrigins
string[] 选填
-
documentUrls
string[] 选填
-
frameIds
number[](选填)
-
无痕模式
布尔值(可选)
-
tabIds
number[](选填)
-
windowIds
number[](选填)
ContextType
枚举
"TAB"
将上下文类型指定为制表符
"POPUP"
以扩展程序弹出式窗口的形式指定上下文类型
"BACKGROUND"
将上下文类型指定为 Service Worker。
"OFFSCREEN_DOCUMENT"
将上下文类型指定为屏幕外文档。
"SIDE_PANEL"
将上下文类型指定为侧边栏。
ExtensionContext
上下文托管扩展程序内容。
属性
-
上下文 ID
字符串
此上下文的唯一标识符
-
contextType
与此字段对应的上下文类型。
-
documentId
字符串(可选)
与此上下文关联的文档的 UUID;如果此上下文未托管在文档中,则值为 undefined。
-
documentOrigin
字符串(可选)
与此上下文关联的文档的来源,如果上下文未托管在文档中,则为未定义。
-
documentUrl
字符串(可选)
与此上下文关联的文档的网址,如果上下文未托管在文档中,则该值为未定义。
-
frameId
number
此上下文的帧的 ID,如果此上下文未托管在框架中,则为 -1。
-
无痕模式
布尔值
上下文是否与无痕个人资料相关联。
-
tabId
number
此上下文的标签页 ID,如果此上下文未托管在标签页中,则为 -1。
-
windowId
number
此上下文的窗口 ID,如果此上下文未托管在窗口中,则为 -1。
MessageSender
一个对象,其中包含有关发送消息或请求的脚本上下文的信息。
属性
-
documentId
字符串(可选)
Chrome 106 及更高版本打开连接的文档的 UUID。
-
documentLifecycle
字符串(可选)
Chrome 106 及更高版本创建端口时,打开连接的文档所处的生命周期。请注意,自端口创建以来,文档的生命周期状态可能已发生变化。
-
frameId
编号(选填)
打开连接的帧。0 表示顶级帧,正值表示子帧。仅当已设置
tab
时,才会设置此字段。 -
id
字符串(可选)
打开连接的扩展程序的 ID(如果有)。
-
nativeApplication
字符串(可选)
Chrome 74 及更高版本打开连接的本机应用的名称(如果有)。
-
源
字符串(可选)
Chrome 80 及更高版本打开连接的网页或框架的来源。它可以不同于网址属性(例如 about:blank),也可以是不透明的(例如沙盒化 iframe)。如果我们不能通过网址立即判断来源是否可信,这对于确定来源是否可信非常有用。
-
Tab
Tab(可选)
打开连接的
tabs.Tab
(如果有)。仅当从标签页(包括内容脚本)打开连接时,此属性才存在,且仅当接收方是扩展程序(而非应用)时才会显示。 -
tlsChannelId
字符串(可选)
打开连接的网页或框架的 TLS 通道 ID(如果扩展程序已请求并且可用)。
-
网址
字符串(可选)
打开连接的网页或框架的网址。如果发件人位于 iframe 中,则其网址是 iframe 的网址,而不是托管该网址的网页的网址。
OnInstalledReason
分派此事件的原因。
枚举
"install"
将事件原因指定为安装。
"update"
以扩展程序更新的形式指定事件原因。
"chrome_update"
将事件原因指定为 Chrome 更新。
"shared_module_update"
将事件原因指定为共享模块的更新。
OnRestartRequiredReason
分派事件的原因。“app_update”因为应用已更新到较新版本,所以在需要重启时使用。“os_update”由于浏览器/操作系统已更新为较新版本,因此在需要重启时使用了 。“定期”当系统运行时间超过了企业政策中设定的允许的正常运行时间时,系统会使用此策略。
枚举
"app_update"
以应用更新的形式指定事件原因。
"os_update"
将事件原因指定为操作系统更新。
"periodic"
以定期重启应用的形式指定事件原因。
PlatformArch
机器的处理器架构。
枚举
"arm"
将处理器架构指定为 arm。
"arm64"
将处理器架构指定为 arm64。
"x86-32"
将处理器架构指定为 x86-32。
"x86-64"
将处理器架构指定为 x86-64。
"mips"
以 mips 形式指定处理器架构。
"mips64"
将处理器架构指定为 mips64。
PlatformInfo
包含当前平台相关信息的对象。
属性
-
拱门
机器的处理器架构。
-
nacl_arch
原生客户端架构。这可能与某些平台上的 arch 不同。
-
os
运行 Chrome 的操作系统。
PlatformNaclArch
原生客户端架构。这可能与某些平台上的 arch 不同。
枚举
"arm"
将原生客户端架构指定为 arm。
"x86-32"
将原生客户端架构指定为 x86-32。
"x86-64"
将原生客户端架构指定为 x86-64。
"mips"
将原生客户端架构指定为 mips。
"mips64"
将原生客户端架构指定为 mips64。
PlatformOs
运行 Chrome 的操作系统。
枚举
"mac"
指定 MacOS 操作系统。
"win"
指定 Windows 操作系统。
"android"
指定 Android 操作系统。
"cros"
指定 Chrome 操作系统。
"linux"
指定 Linux 操作系统。
"openbsd"
指定 OpenBSD 操作系统。
"fuchsia"
指定 Fuchsia 操作系统。
Port
允许与其他页面进行双向通信的对象。如需了解详情,请参阅长期有效的连接。
属性
-
name
字符串
端口的名称,在调用
runtime.connect
时指定。 -
onDisconnect
事件<functionvoidvoid>
在端口与另一端断开连接时触发。如果端口因错误而断开连接,可以设置
runtime.lastError
。如果端口通过 disconnect 关闭,则仅在另一端触发此事件。此事件最多触发一次(另请参阅端口生命周期)。onDisconnect.addListener
函数如下所示:(callback: function) => {...}
-
onMessage
事件<functionvoidvoid>
端口的另一端调用 postMessage 时会触发此事件。
onMessage.addListener
函数如下所示:(callback: function) => {...}
-
发送者
此属性仅存在于传递到 onConnect / onConnectExternal / onConnectNative 监听器的端口上。
-
断开连接
void
立即断开端口连接。在已断开连接的端口上调用
disconnect()
不会产生任何影响。如果某个端口断开连接,系统将不会再向此端口分派新事件。disconnect
函数如下所示:() => {...}
-
postMessage
void
向端口的另一端发送消息。如果端口断开,系统会抛出错误。
postMessage
函数如下所示:(message: any) => {...}
-
消息
任意
Chrome 52 及更高版本要发送的消息。此对象应为 JSON ifiable。
-
RequestUpdateCheckStatus
更新检查的结果。
枚举
"throttled"
指定状态检查已节流。如果经过短时间内的反复检查,就可能会发生这种情况。
"no_update"
表示没有可安装的更新。
"update_available"
指定有可用更新可供安装。
属性
id
扩展程序/应用的 ID。
类型
字符串
lastError
在调用 API 函数失败时填充错误消息;否则将处于未定义状态。这仅在该函数的回调范围内定义。如果生成了错误,但您未在回调中访问 runtime.lastError
,则系统会向控制台记录一条消息,其中会列出产生该错误的 API 函数。返回 promise 的 API 函数不会设置此属性。
类型
对象
属性
-
消息
字符串(可选)
所发生的错误的详细信息。
方法
connect()
chrome.runtime.connect(
extensionId?: string,
connectInfo?: object,
)
尝试连接某个扩展程序(例如后台页面)或其他扩展程序/应用中的监听器。这对连接到扩展程序进程的内容脚本、应用间/扩展程序通信以及网络消息传递非常有用。请注意,这不会连接到内容脚本中的任何监听器。扩展程序可以通过 tabs.connect
连接到嵌入在标签页中的内容脚本。
参数
-
extensionId
字符串(可选)
要连接的扩展程序的 ID。如果省略,系统将尝试通过您自己的扩展程序进行连接。如果要从网页发送消息以发送网络消息,则必须提供此参数。
-
connectInfo
对象(可选)
-
includeTlsChannelId
布尔值(可选)
对于监听连接事件的进程,是否将 TLS 通道 ID 传递到 onConnectExternal。
-
name
字符串(可选)
对于正在监听连接事件的进程,将传入到 onConnect 中。
-
返回
-
可用于发送和接收消息的端口。如果该扩展程序不存在,则会触发端口的 onDisconnect 事件。
connectNative()
chrome.runtime.connectNative(
application: string,
)
连接到主机中的原生应用。此方法需要 "nativeMessaging"
权限。如需了解详情,请参阅原生消息传递。
参数
-
应用
字符串
要连接的已注册应用的名称。
返回
-
可用于随应用发送和接收消息的端口
getBackgroundPage()
chrome.runtime.getBackgroundPage(
callback?: function,
)
检索 JavaScript“window”对象。如果后台页面是事件页面,系统将确保它在调用回调之前已加载。如果没有后台网页,则会设置错误。
参数
-
callback
函数(可选)
callback
参数如下所示:(backgroundPage?: Window) => void
-
backgroundPage
时间范围(可选)
JavaScript“窗口”对象。
-
返回
-
Promise<Window |未定义>
Chrome 99 及更高版本Manifest V3 及更高版本支持 Promise,但为以下项目提供回调: 向后兼容性您不能在同一个函数调用中同时使用这两者。通过 promise 使用传递给回调的类型进行解析。
getContexts()
chrome.runtime.getContexts(
filter: ContextFilter,
callback?: function,
)
获取与此扩展程序关联的活跃上下文的相关信息
参数
-
filter
用于查找匹配上下文的过滤条件。如果上下文与过滤器中的所有指定字段匹配,则视为匹配。过滤器中的任何未指定字段都与所有上下文匹配。
-
callback
函数(可选)
callback
参数如下所示:(contexts: ExtensionContext[]) => void
-
上下文
匹配的上下文(如果有)。
-
返回
-
Promise<ExtensionContext[]>
Manifest V3 及更高版本支持 Promise,但为以下项目提供回调: 向后兼容性您不能在同一个函数调用中同时使用这两者。通过 promise 使用传递给回调的类型进行解析。
返回
-
对象
清单详细信息。
getPackageDirectoryEntry()
chrome.runtime.getPackageDirectoryEntry(
callback?: function,
)
返回软件包目录的 DirectoryEntry。
参数
-
callback
函数(可选)
callback
参数如下所示:(directoryEntry: DirectoryEntry) => void
-
directoryEntry
DirectoryEntry
-
返回
-
Promise<DirectoryEntry>
Chrome 122 及更高版本Manifest V3 及更高版本支持 Promise,但为以下项目提供回调: 向后兼容性您不能在同一个函数调用中同时使用这两者。通过 promise 使用传递给回调的类型进行解析。
getPlatformInfo()
chrome.runtime.getPlatformInfo(
callback?: function,
)
返回有关当前平台的信息。
参数
-
callback
函数(可选)
callback
参数如下所示:(platformInfo: PlatformInfo) => void
-
platformInfo
-
返回
-
Promise<PlatformInfo>
Chrome 99 及更高版本Manifest V3 及更高版本支持 Promise,但为以下项目提供回调: 向后兼容性您不能在同一个函数调用中同时使用这两者。通过 promise 使用传递给回调的类型进行解析。
getURL()
chrome.runtime.getURL(
path: string,
)
将应用/扩展程序安装目录中的相对路径转换为完全限定网址。
参数
-
路径
字符串
指向应用/扩展程序中某个资源的路径,以相对于其安装目录来表示。
返回
-
字符串
指向资源的完全限定网址。
openOptionsPage()
chrome.runtime.openOptionsPage(
callback?: function,
)
如果可能,打开扩展程序的选项页面。
具体行为可能取决于清单的 [options_ui](https://developer.chrome.com/docs/extensions/develop/ui/options-page#embedded_options)
或 [options_page](https://developer.chrome.com/docs/extensions/develop/ui/options-page#full_page)
键,或者 Chrome 当时为提供支持的情形。例如,该网页可能会在新标签页、chrome://extensions 内或应用内打开,也可能只是聚焦于打开的选项页。绝不会导致调用方页面重新加载。
如果您的扩展程序未声明选项页面,或 Chrome 由于其他原因未能创建选项页面,则回调将设置 lastError
。
参数
-
callback
函数(可选)
callback
参数如下所示:() => void
返回
-
承诺<void>
Chrome 99 及更高版本Manifest V3 及更高版本支持 Promise,但为以下项目提供回调: 向后兼容性您不能在同一个函数调用中同时使用这两者。通过 promise 使用传递给回调的类型进行解析。
reload()
chrome.runtime.reload()
重新加载应用或扩展程序。自助服务终端模式不支持此方法。对于自助服务终端模式,请使用 chrome.runtime.restart() 方法。
requestUpdateCheck()
chrome.runtime.requestUpdateCheck(
callback?: function,
)
请求立即检查此应用/扩展程序的更新。
重要提示:大多数扩展程序/应用都不应使用此方法,因为 Chrome 已每隔几小时执行一次自动检查,并且您无需调用 requestUpdateCheck 即可监听 runtime.onUpdateAvailable
事件。
此方法只适合在极少数情况下调用,例如,如果您的扩展程序与后端服务通信,而后端服务确定客户端扩展程序版本非常过时,您想要提示用户进行更新。requestUpdateCheck 的大多数其他用途(例如根据重复计时器无条件调用)可能只会浪费客户端、网络和服务器资源。
注意: 使用回调进行调用时,此函数将返回两个属性作为传递给回调的单独参数,而不是返回对象。
参数
-
callback
函数(可选)
callback
参数如下所示:(result: object) => void
-
结果
对象
Chrome 109 及更高版本RequestUpdateCheckResult 对象,该对象用于保存更新检查的状态以及结果的任何详细信息(如果有更新的话)。
-
更新检查的结果。
-
版本
字符串(可选)
如果有可用更新,此字段包含可用更新的版本。
-
-
返回
-
Promise<object>
Chrome 109 及更高版本Manifest V3 及更高版本支持 Promise,但为以下项目提供回调: 向后兼容性您不能在同一个函数调用中同时使用这两者。通过 promise 使用传递给回调的类型进行解析。
restart()
chrome.runtime.restart()
当应用在自助服务终端模式下运行时,重启 ChromeOS 设备。否则,为空操作。
restartAfterDelay()
chrome.runtime.restartAfterDelay(
seconds: number,
callback?: function,
)
指定秒数后,当 ChromeOS 设备在自助服务终端模式下运行时,重启 ChromeOS 设备。如果在上述时间结束之前再次调用,将会延迟重新启动。如果调用时将值设置为 -1,则系统将取消重新启动。在非自助服务终端模式下,这项服务为空操作。只能由第一个扩展程序反复调用以调用此 API。
参数
-
秒
number
在重新启动设备前等待的时间(以秒为单位),如果值为 -1,则取消预定的重新启动。
-
callback
函数(可选)
callback
参数如下所示:() => void
返回
-
承诺<void>
Chrome 99 及更高版本Manifest V3 及更高版本支持 Promise,但为以下项目提供回调: 向后兼容性您不能在同一个函数调用中同时使用这两者。通过 promise 使用传递给回调的类型进行解析。
sendMessage()
chrome.runtime.sendMessage(
extensionId?: string,
message: any,
options?: object,
callback?: function,
)
向扩展程序或其他扩展程序/应用中的事件监听器发送一条消息。与 runtime.connect
类似,但只发送一条消息,并附有可选的响应。如果向您的扩展程序发送事件,系统会在您扩展程序的每一帧(发送者的帧除外)中触发 runtime.onMessage
事件;如果将事件发送到其他扩展程序,则会触发 runtime.onMessageExternal
事件。请注意,扩展程序无法使用此方法向内容脚本发送消息。如需向内容脚本发送消息,请使用 tabs.sendMessage
。
参数
-
extensionId
字符串(可选)
要向其发送消息的扩展程序的 ID。如果省略,消息会发送到您自己的扩展程序/应用。如果要从网页发送消息以发送网络消息,则必须提供此参数。
-
消息
任意
要发送的消息。此消息应为 JSON 格式对象。
-
选项
对象(可选)
-
includeTlsChannelId
布尔值(可选)
对于监听连接事件的进程,是否将 TLS 通道 ID 传递到 onMessageExternal。
-
-
callback
函数(可选)
Chrome 99 及更高版本callback
参数如下所示:(response: any) => void
-
Response
任意
消息处理程序发送的 JSON 响应对象。如果连接到扩展程序时出错,则调用回调时不使用任何参数,并且
runtime.lastError
将被设置为错误消息。
-
返回
-
承诺<any>
Chrome 99 及更高版本Manifest V3 及更高版本支持 Promise,但为以下项目提供回调: 向后兼容性您不能在同一个函数调用中同时使用这两者。通过 promise 使用传递给回调的类型进行解析。
sendNativeMessage()
chrome.runtime.sendNativeMessage(
application: string,
message: object,
callback?: function,
)
向原生应用发送一条消息。此方法需要 "nativeMessaging"
权限。
参数
-
应用
字符串
本地消息传递主机的名称。
-
消息
对象
将传递给本地消息传递主机的消息。
-
callback
函数(可选)
Chrome 99 及更高版本callback
参数如下所示:(response: any) => void
-
Response
任意
由原生消息传递主机发送的响应消息。如果在连接到原生消息传递主机时出错,则调用该回调时不使用任何参数,并且
runtime.lastError
将被设置为错误消息。
-
返回
-
承诺<any>
Chrome 99 及更高版本Manifest V3 及更高版本支持 Promise,但为以下项目提供回调: 向后兼容性您不能在同一个函数调用中同时使用这两者。通过 promise 使用传递给回调的类型进行解析。
setUninstallURL()
chrome.runtime.setUninstallURL(
url: string,
callback?: function,
)
设置卸载时要访问的网址。这可用于清理服务器端数据、进行分析和开展问卷调查。不得超过 1023 个字符。
参数
-
网址
字符串
要在卸载扩展程序后打开的网址。此网址必须采用 http: 或 https: 架构。设置空字符串,以便在卸载时不打开新标签页。
-
callback
函数(可选)
Chrome 45 及更高版本callback
参数如下所示:() => void
返回
-
承诺<void>
Chrome 99 及更高版本Manifest V3 及更高版本支持 Promise,但为以下项目提供回调: 向后兼容性您不能在同一个函数调用中同时使用这两者。通过 promise 使用传递给回调的类型进行解析。
事件
onBrowserUpdateAvailable
chrome.runtime.onBrowserUpdateAvailable.addListener(
callback: function,
)
请使用 runtime.onRestartRequired
。
有可用的 Chrome 更新时触发,但浏览器需要重启后未立即安装。
参数
-
callback
函数
callback
参数如下所示:() => void
onConnect
chrome.runtime.onConnect.addListener(
callback: function,
)
在通过扩展程序进程或内容脚本(通过 runtime.connect
)建立连接时触发。
onConnectExternal
chrome.runtime.onConnectExternal.addListener(
callback: function,
)
从其他扩展程序(通过 runtime.connect
)或可外部连接的网站建立连接时触发。
onConnectNative
chrome.runtime.onConnectNative.addListener(
callback: function,
)
通过本地应用建立连接时触发。此活动需要 "nativeMessaging"
权限。只有 Chrome 操作系统支持此功能。
onInstalled
chrome.runtime.onInstalled.addListener(
callback: function,
)
首次安装扩展程序、扩展程序更新到新版本以及 Chrome 更新到新版本时触发。
参数
-
callback
函数
callback
参数如下所示:(details: object) => void
-
详细信息
对象
-
id
字符串(可选)
指示已更新的导入的共享模块扩展程序的 ID。仅当“原因”存在时,是“shared_module_update”。
-
previousVersion
字符串(可选)
表示扩展程序的上一个版本,该版本刚刚更新。仅当“原因”存在时,是“update”。
-
reason
分派此事件的原因。
-
-
onMessage
chrome.runtime.onMessage.addListener(
callback: function,
)
通过扩展程序进程(通过 runtime.sendMessage
)或内容脚本(通过 tabs.sendMessage
)发送消息时触发。
参数
-
callback
函数
callback
参数如下所示:(message: any, sender: MessageSender, sendResponse: function) => boolean | undefined
-
消息
任意
-
发送者
-
sendResponse
函数
sendResponse
参数如下所示:() => void
-
返回
boolean |未定义
-
onMessageExternal
chrome.runtime.onMessageExternal.addListener(
callback: function,
)
从其他扩展程序(通过 runtime.sendMessage
)发送消息时触发。不能在内容脚本中使用。
参数
-
callback
函数
callback
参数如下所示:(message: any, sender: MessageSender, sendResponse: function) => boolean | undefined
-
消息
任意
-
发送者
-
sendResponse
函数
sendResponse
参数如下所示:() => void
-
返回
boolean |未定义
-
onRestartRequired
chrome.runtime.onRestartRequired.addListener(
callback: function,
)
在需要重启应用或运行应用的设备时触发。应用应尽早关闭其所有窗口,以便让重启发生。如果应用不执行任何操作,则系统会在 24 小时的宽限期过后强制执行重启。目前,系统只会针对 Chrome 操作系统自助服务终端应用触发此事件。
参数
-
callback
函数
callback
参数如下所示:(reason: OnRestartRequiredReason) => void
-
reason
-
onStartup
chrome.runtime.onStartup.addListener(
callback: function,
)
在安装了此扩展程序的配置文件首次启动时触发。启动无痕模式个人资料时不会触发此事件,即使此扩展程序在“分屏”模式下运行也是如此无痕模式。
参数
-
callback
函数
callback
参数如下所示:() => void
onSuspend
chrome.runtime.onSuspend.addListener(
callback: function,
)
在即将卸载前发送到活动页面。这样,扩展程序就有机会进行清理。请注意,由于页面正在卸载,因此处理此事件时启动的任何异步操作不一定会完成。如果该事件页面在被卸载之前发生了更多活动,则系统会发送 onSuspendCanceled 事件,并且该页面不会卸载。
参数
-
callback
函数
callback
参数如下所示:() => void
onSuspendCanceled
chrome.runtime.onSuspendCanceled.addListener(
callback: function,
)
在 onSuspend 之后发送,以指示应用完全不会卸载。
参数
-
callback
函数
callback
参数如下所示:() => void
onUpdateAvailable
chrome.runtime.onUpdateAvailable.addListener(
callback: function,
)
有可用更新时触发,但应用目前正在运行而没有立即安装。如果您不执行任何操作,系统将在下次卸载后台页面时安装更新。如果您希望尽快安装更新,可以明确调用 chrome.runtime.reload()。如果您的扩展程序使用的是持续性后台页面,则后台页面当然永远不会卸载,因此除非您手动调用 chrome.runtime.reload() 以响应此事件,否则要等到 Chrome 下次重新启动时,系统才会安装更新。如果没有处理程序监听此事件,并且您的扩展程序有一个持续的后台页面,则其行为就像调用了 chrome.runtime.reload() 来响应此事件一样。
参数
-
callback
函数
callback
参数如下所示:(details: object) => void
-
详细信息
对象
-
版本
字符串
可用更新的版本号。
-
-
onUserScriptConnect
chrome.runtime.onUserScriptConnect.addListener(
callback: function,
)
通过此扩展程序的用户脚本建立连接时触发。
onUserScriptMessage
chrome.runtime.onUserScriptMessage.addListener(
callback: function,
)
从与同一扩展程序相关联的用户脚本发送消息时触发。
参数
-
callback
函数
callback
参数如下所示:(message: any, sender: MessageSender, sendResponse: function) => boolean | undefined
-
消息
任意
-
发送者
-
sendResponse
函数
sendResponse
参数如下所示:() => void
-
返回
boolean |未定义
-