跳转到主要内容

Electron 36.0.0

·阅读时长 5 分钟

Electron 36.0.0 已发布!它包含了对 Chromium 136、V8 13.6 和 Node 22.14.0 的升级。


Electron 团队很高兴地宣布 Electron 36.0.0 版本发布!您可以使用 npm 通过 npm install electron@latest 安装它,或从我们的 发布网站 下载。继续阅读以了解此版本的详细信息。

如果您有任何反馈,请在 BlueskyMastodon 上与我们分享,或加入我们的社区 Discord!错误和功能请求可以在 Electron 的 问题跟踪器 中报告。

值得注意的变化

写作工具支持

在 Electron 36 中,您可以启用 macOS 系统级别的功能,例如写作工具(拼写和语法检查)、自动填充和“服务”菜单项,在您的上下文菜单中。为此,将 WebFrameMain 实例传递给 menu.popup()frame 参数。

import { BrowserWindow, Menu, WebFrameMain } from 'electron';

const currentWindow = BrowserWindow.getFocusedWindow();
const focusedFrame = currentWindow.webContents.focusedFrame;
const menu = Menu.buildFromTemplate([{ label: 'Copy', role: 'copy' }]);

menu.popup({
window: currentWindow,
frame: focusedFrame,
});

堆栈变化

Electron 36 将 Chromium 从 134.0.6998.23 升级到 136.0.7103.48,并将 V8 从 13.5 升级到 13.6

新功能和改进

  • 添加了 BrowserWindow.isSnapped() 来指示给定的窗口是否在 Windows 上通过 Snap 方式排列。 #46226
  • 添加了 WebContents.focusedFrame 来获取当前获得焦点的 frame。
  • 修复了 WebContents.opener 以指定潜在的 null 类型。 #45667
  • ffmpeg.dll 添加到延迟加载配置。 #46173 (同样适用于 3435)
  • 添加了 nativeTheme.shouldUseDarkColorsForSystemIntegratedUI 以区分系统和应用程序主题。 #46598 (同样适用于 35)
  • webRequest 过滤器添加了 excludeUrls,并弃用了在 urls 属性中使用空数组。 #44692 (同样适用于 35)
  • 通过 menu.popup 中的新 frame 选项,添加了对 macOS 级别上下文菜单中自动填充、写作工具和“服务”菜单项的支持。 #46350
  • 添加了对 Linux 上 system-context-menu 的支持。 #46399
  • 改进了 Windows 上 ASAR 完整性检查。 #46537
  • 改进了 macOS 上在不请求缩略图时 desktopCapturer.getSources 的性能。 #46251 (同样适用于 3435)
  • 移除了在使用共享纹理 OSR 时 240 FPS 的限制。 #45669 (同样适用于 35)

破坏性变更

已弃用:NativeImage.getBitmap()

NativeImage.getBitmap() 函数现已弃用,并被记录为 NativeImage.toBitmap() 的别名。这两个函数都返回一个新分配的位图副本,并且功能上是等效的。

已弃用:session 上的扩展方法和事件

session.loadExtensionsession.removeExtensionsession.getExtensionsession.getAllExtensions 以及事件 extension-loadedextension-unloadedextension-ready 都已移动到新的 Extensions 对象,该对象可通过 session.extensions 实例属性访问。

移除了:session.clearStorageData(options)quota 类型 syncable

调用 session.clearStorageData(options) 时,options.quota 类型 syncable 已不再受支持,因为它已被上游 Chromium 移除

已弃用:session.clearStorageData(options) 中的 quota 属性

调用 Session.clearStorageData(options) 时,options.quota 属性已被弃用。由于 syncable 类型已被移除,现在只剩下一种类型——'temporary'——因此没有必要再指定它。

行为变更:在 GNOME 上运行时,GTK 4 是默认设置

上游变更 之后,在 GNOME 上运行时,GTK 4 现在是默认设置。

在极少数情况下,这可能会导致某些应用程序或配置出现 错误,并显示以下消息

Gtk-ERROR **: 11:30:38.382: GTK 2/3 symbols detected. Using GTK 2/3 and GTK 4 in the same process is not supported

受影响的用户可以通过指定 gtk-version 命令行标志来解决此问题:

$ electron --gtk-version=3   # or --gtk-version=2

可以使用 app.commandLine.appendSwitch 函数执行相同的操作。

行为变更:app.commandLine

app.commandLine 会将大写的开关和参数转换为小写。

app.commandLine 原本只用于处理 Chromium 开关(这些开关不区分大小写),并且通过 app.commandLine 传递的开关不会传递给任何子进程。

如果您之前使用 app.commandLine 来解析特定于应用的命令行参数,您应该改为通过 process.argv 来实现。

33.x.y 停止支持

根据项目的 支持策略,Electron 33.x.y 已停止支持。鼓励开发者和应用程序升级到较新版本的 Electron。

E36 (25年4月)E37 (25年6月)E38 (25年8月)
36.x.y37.x.y38.x.y
35.x.y36.x.y37.x.y
34.x.y35.x.y36.x.y

接下来是什么

短期内,您可以预期团队将继续专注于跟进构成 Electron 的主要组件(包括 Chromium、Node 和 V8)的开发。

您可以在 此处 找到 Electron 的公共时间线。

有关未来变更的更多信息,请参见 计划中的破坏性变更 页面。