跳转到主要内容

类:Extensions

类:Extensions

加载并与扩展程序进行交互。

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

Sessionextensions 属性用于访问 Extensions 类的实例。

实例事件

Extensions 实例可用的事件如下:

事件:'extension-loaded'

返回

在扩展加载后发出。每当向扩展程序的“已启用”集合中添加扩展程序时,就会发生这种情况。这包括:

  • 通过 Extensions.loadExtension 加载的扩展程序。
  • 重新加载的扩展程序

事件:'extension-unloaded'

返回

在扩展卸载后发出。调用 Session.removeExtension 时会发生这种情况。

事件:'extension-ready'

返回

在扩展加载后发出,并且所有必需的浏览器状态都已初始化以支持扩展程序后台页面的启动。

实例方法

Extensions 实例可用的方法如下:

extensions.loadExtension(path[, options])

  • path string - 包含未打包的 Chrome 扩展程序的目录路径
  • options Object (可选)
    • allowFileAccess boolean - 是否允许扩展程序通过 file:// 协议读取本地文件,并将内容脚本注入 file:// 页面。例如,这对于在 file:// URL 上加载开发者工具扩展程序是必需的。默认为 false。

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

如果扩展程序加载失败,此方法将引发异常。如果在安装扩展程序时出现警告(例如,如果扩展程序请求了 Electron 不支持的 API),则会将警告记录到控制台。

请注意,Electron 不支持完整的 Chrome 扩展程序 API。有关支持的 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) 扩展程序。

注意

在发出 app 模块的 ready 事件之前,无法调用此 API。

注意

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

extensions.removeExtension(extensionId)

  • extensionId string - 要移除的扩展程序的 ID

卸载扩展程序。

注意

在发出 app 模块的 ready 事件之前,无法调用此 API。

extensions.getExtension(extensionId)

  • extensionId string - 要查询的扩展程序的 ID

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

注意

在发出 app 模块的 ready 事件之前,无法调用此 API。

extensions.getAllExtensions()

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

注意

在发出 app 模块的 ready 事件之前,无法调用此 API。