跳转至

扩展 API

类:Extensions

加载并与扩展交互。

进程:主进程
此类未从 'electron' 模块导出。它仅可作为 Electron API 中其他方法的返回值使用。

通过 Session 的 extensions 属性访问 Extensions 类的实例。

实例事件

以下事件可用于 Extensions 的实例:

事件:'extension-loaded'

返回值:

在扩展加载后发出。每当扩展被添加到“已启用”扩展集合时,就会发生此情况。这包括:

  • 通过 Extensions.loadExtension 加载的扩展。
  • 重新加载的扩展:
  • 从崩溃中恢复。
  • 如果扩展请求了它(chrome.runtime.reload())。

事件:'extension-unloaded'

返回值:

在扩展卸载后发出。当调用 Session.removeExtension 时,就会发生此情况。

事件:'extension-ready'

返回值:

在扩展加载且所有必要的浏览器状态已初始化,以支持启动扩展的背景页面后发出。

实例方法

以下方法可用于 Extensions 的实例:

extensions.loadExtension(path[, options])

  • path string - 包含未打包 Chrome 扩展的目录路径
  • options Object(可选)
  • allowFileAccess boolean - 是否允许扩展通过 file:// 协议读取本地文件,并向 file:// 页面注入内容脚本。例如,在 file:// URL 上加载 DevTools 扩展时需要此项。默认为 false。

返回 Promise<Extension> - 在扩展加载完成时解析。

如果扩展无法加载,此方法将抛出异常。如果安装扩展时存在警告(例如扩展请求了 Electron 不支持的 API),则这些警告会记录到控制台。

请注意,Electron 不支持完整的 Chrome 扩展 API 范围。有关支持内容的详细信息,请参阅 受支持的扩展 API。

请注意,在早期版本的 Electron 中,已加载的扩展会被记住,以便在应用程序的后续运行中使用。现在不再如此:如果希望加载扩展,则必须在每次启动应用时调用 loadExtension。

const { app, session } = require('electron')

const path = require('node:path')

app.whenReady().then(async () => {
  await session.defaultSession.extensions.loadExtension(
    path.join(__dirname, 'react-devtools'),
    // allowFileAccess is required to load the DevTools extension on file:// URLs.
    { allowFileAccess: true }
  )
  // Note that in order to use the React DevTools extension, you'll need to
  // download and unzip a copy of the extension.
})

此 API 不支持加载打包的(.crx)扩展。

[!NOTE] 在 app 模块的 ready 事件发出之前,不能调用此 API。

[!NOTE] 不支持将扩展加载到内存中(非持久化)的会话中,否则会抛出错误。

extensions.removeExtension(extensionId)

  • extensionId string - 要移除的扩展 ID

卸载扩展。

[!NOTE] 在 app 模块的 ready 事件发出之前,不能调用此 API。

extensions.getExtension(extensionId)

  • extensionId string - 要查询的扩展 ID

返回 Extension | null - 具有给定 ID 的已加载扩展。

[!NOTE] 在 app 模块的 ready 事件发出之前,不能调用此 API。

extensions.getAllExtensions()

返回 Extension[] - 所有已加载扩展的列表。

[!NOTE] 在 app 模块的 ready 事件发出之前,不能调用此 API。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 el/electron