谷歌浏览器插件教程runtime 运行周期

chrome.runtime

使用chrome.runtimeAPI 检索后台页面,返回有关清单的详细信息,以及侦听和响应应用程序或扩展生命周期中的事件。您还可以使用此 API 将 URL 的相对路径转换为完全限定的 URL。

消息传递
这些方法支持消息传递,以便您可以与扩展程序的不同部分(例如扩展程序弹出窗口和后台脚本)、其他扩展程序或用户设备上的本机应用程序进行通信。有关该主题的概述,请参阅消息传递。此类别中的方法包括connect、connectNative、sendMessage和sendNativeMessage。
访问扩展和平台元数据
这些方法使您可以检索有关扩展和平台的若干特定元数据。此类别中的方法包括getBackgroundPage、getManifest、getPackageDirectoryEntry和getPlatformInfo。
管理扩展生命周期和选项
这些方法让您可以对扩展执行一些元操作,并向扩展用户显示选项页面。此类别中的方法包括reload、requestUpdateCheck、setUninstallURL和openOptionsPage。
设备重启支持
这些方法仅在 ChromeOS 上可用,并且主要用于支持信息亭实现。此类别中的方法包括restart和restartAfterDelay。
辅助实用程序
这些方法提供了实用程序,例如将内部资源表示转换为外部格式。此类别中的方法包括getURL。

运行时 API 上的大多数方法不需要任何权限即可使用。但是,sendNativeMessage和connectNative需要nativeMessaging在清单中声明权限

类型

MessageSender

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

  • frameId
    打开连接的框架。0 表示顶级框架,正数表示子框架。这只会在设置时tab设置

  • id
    打开连接的扩展程序或应用程序的 ID(如果有)。

  • nativeApplication
    打开连接的本机应用程序的名称(如果有)。

  • origin
    打开连接的页面或框架的来源。它可以与 url 属性不同(例如,about:blank),也可以是不透明的(例如, iframe)。如果我们不能立即从 URL 中分辨出来,这对于确定是否可以信任来源很有用。

  • tab
    tabs.Tab哪个打开了连接,如果有的话。此属性仅在从选项卡(包括内容脚本)打开连接时存在,并且仅当接收器是扩展程序而不是应用程序时才存在。

  • tlsChannelId
    打开连接的页面或框架的 TLS 通道 ID(如果扩展程序或应用程序请求并且如果可用)。

  • url
    打开连接的页面或框架的 URL。如果发件人在 iframe 中,它将是 iframe 的 URL,而不是托管它的页面的 URL。

OnInstalledReason

安装原因

  • "install"
  • "update"
  • "chrome_update", or "shared_module_update"

OnRestartRequiredReason

调度事件的原因。'app_update' 在需要重新启动时使用,因为应用程序已更新到较新的版本。'os_update' 在需要重新启动时使用,因为浏览器/操作系统已更新到较新版本。当系统运行时间超过企业策略中设置的允许正常运行时间时,使用“定期”。

  • "app_update"
  • "os_update", or"periodic"

PlatformArch

机器的处理器架构。

  • "arm"
  • "arm64"
  • "x86-32"
  • "x86-64"
  • "mips", or "mips64"

PlatformInfo

平台信息

  • arch

机器的处理器架构。

  • nacl_arch

本机客户端架构。这可能与某些平台上的 arch 不同。

  • os
    Chrome 正在运行的操作系统。

PlatformNaclArch

本机客户端架构。这可能与某些平台上的 arch 不同。

  • arm
  • x86-32
  • x86-64
  • mips
  • mips64

PlatformOs

Chrome 正在运行的操作系统。

  • mac
  • win
  • android
  • cros
  • linux
  • openbsd
  • fuchsia

Port

允许与其他页面进行双向通信的对象。有关详细信息,请参阅长期连接。

  • name
  • onDisconnect
    当端口与另一端断开连接时触发。runtime.lastError如果端口因错误而断开连接,则可以设置。如果端口通过disconnect关闭,则仅在另一端触发此事件。此事件最多触发一次(另请参阅端口生命周期)。
(callback: function) => {...}

callback :

(port: Port) => void
  • onMessage
    当端口的另一端调用postMessage时会触发此事件。
    该onMessage.addListener函数如下所示:

    (callback: function) => {...}

    callback

    (message: any, port: Port) => void
  • sender
    发件人

  • disconnect

立即断开端口。调用disconnect() 已断开连接的端口无效。当某个端口断开连接时,不会向该端口发送新的事件。

() => {...}
  • postMessage
    向端口的另一端发送消息。如果端口断开连接,则会引发错误。

RequestUpdateCheckStatus

更新检查的结果。

  • throttled
  • no_update
  • update_available

属性

id

扩展程序/应用程序的 ID。

lastError

如果出现错误,这将在 API 方法回调期间定义

方法

connect

尝试连接以连接扩展程序/应用程序(例如后台页面)或其他扩展程序/应用程序中的侦听器。这对于连接到其扩展进程的内容脚本、应用程序间/扩展程序间通信和Web 消息传递非常有用。请注意,这不会连接到内容脚本中的任何侦听器。扩展可以通过 连接到嵌入在选项卡中的内容脚本tabs.connect。

chrome.runtime.connect(
  extensionId?: string,
  connectInfo?: object,
)
  • extensionId
    要连接的扩展程序或应用程序的 ID。如果省略,将尝试使用您自己的分机进行连接。如果从网页发送消息以进行网络消息传递,则为必需。

  • connectInfo

    • includeTlsChannelId:TLS 通道 ID 是否将传递到 onConnectExternal 以用于正在侦听连接事件的进程。
    • name:将传递到 onConnect 用于正在侦听连接事件的进程

返回 Port
可以发送和接收消息的端口。如果扩展程序/应用程序不存在,则会触发端口的onDisconnect事件。

需要花费 30 个 学币,后才能查看完整内容 立即购买

评论区 (0)

没有记录
支持 markdown,图片截图粘贴拖拽都可以自动上传。
空气

空气 · 中级学士

热爱技术,喜欢新东西。

老程序员年度分享MVP
查看更多

最新视频课程

钻级赞助商