跳到主要内容

类:Extensions

类:Extensions

加载扩展并与之交互。

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

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

实例事件

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 上加载 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 事件触发之前调用。

注意: 不支持将扩展加载到内存中(非持久性)会话,并且会抛出错误。

extensions.removeExtension(extensionId)

  • extensionId string - 要移除的扩展 ID

卸载扩展。

注意: 此 API 不能在 app 模块的 ready 事件触发之前调用。

extensions.getExtension(extensionId)

  • extensionId string - 要查询的扩展 ID

返回 Extension | null - 指定 ID 的已加载扩展。

注意: 此 API 不能在 app 模块的 ready 事件触发之前调用。

extensions.getAllExtensions()

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

注意: 此 API 不能在 app 模块的 ready 事件触发之前调用。