跳转到主要内容

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!Bug 和功能请求可以在 Electron 的 issue 跟踪器中报告。

重要变更

写作工具支持

在 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 上的贴靠功能进行排列。#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 事件,都已移至可通过 session.extensions 实例属性访问的新的 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 的公开时间线

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