扩展 API
类:Extensions¶
加载并与扩展交互。
进程:主进程
此类未从 'electron' 模块导出。它仅可作为 Electron API 中其他方法的返回值使用。
通过 Session 的 extensions 属性访问 Extensions 类的实例。
实例事件¶
以下事件可用于 Extensions 的实例:
事件:'extension-loaded'¶
返回值:
eventEventextensionExtension
在扩展加载后发出。每当扩展被添加到“已启用”扩展集合时,就会发生此情况。这包括:
- 通过
Extensions.loadExtension加载的扩展。 - 重新加载的扩展:
- 从崩溃中恢复。
- 如果扩展请求了它(
chrome.runtime.reload())。
事件:'extension-unloaded'¶
返回值:
eventEventextensionExtension
在扩展卸载后发出。当调用 Session.removeExtension 时,就会发生此情况。
事件:'extension-ready'¶
返回值:
eventEventextensionExtension
在扩展加载且所有必要的浏览器状态已初始化,以支持启动扩展的背景页面后发出。
实例方法¶
以下方法可用于 Extensions 的实例:
extensions.loadExtension(path[, options])¶
pathstring - 包含未打包 Chrome 扩展的目录路径optionsObject(可选)allowFileAccessboolean - 是否允许扩展通过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)¶
extensionIdstring - 要移除的扩展 ID
卸载扩展。
[!NOTE] 在
app模块的ready事件发出之前,不能调用此 API。
extensions.getExtension(extensionId)¶
extensionIdstring - 要查询的扩展 ID
返回 Extension | null - 具有给定 ID 的已加载扩展。
[!NOTE] 在
app模块的ready事件发出之前,不能调用此 API。
extensions.getAllExtensions()¶
返回 Extension[] - 所有已加载扩展的列表。
[!NOTE] 在
app模块的ready事件发出之前,不能调用此 API。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 el/electron