跳到主要内容

类:扩展

类:扩展

加载扩展并与之交互。

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

Extensions 类的实例通过使用 Sessionextensions 属性来访问。

实例事件

以下事件在 Extensions 的实例上可用

事件:'extension-loaded'

返回

  • event 事件
  • extension 扩展

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

  • Extensions.loadExtension 加载的扩展。
  • 正在重新加载的扩展

事件:'extension-unloaded'

返回

  • event 事件
  • extension 扩展

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

事件:'extension-ready'

返回

  • event 事件
  • extension 扩展

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

实例方法

以下方法在 Extensions 的实例上可用

extensions.loadExtension(path[, options])

  • path 字符串 - 包含解压缩的 Chrome 扩展的目录的路径
  • options 对象 (可选)
    • 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) 扩展。

注意

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

注意

不支持将扩展加载到内存中(非持久性)会话中,并且会引发错误。

extensions.removeExtension(extensionId)

  • extensionId 字符串 - 要删除的扩展的 ID

卸载扩展。

注意

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

extensions.getExtension(extensionId)

  • extensionId 字符串 - 要查询的扩展的 ID

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

注意

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

extensions.getAllExtensions()

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

注意

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