Electron 14.0.0
Electron 14.0.0 已发布! 它包括对 Chromium 93
和 V8 9.3
的升级。 我们添加了几个 API 更新、错误修复和一般改进。 请阅读下文了解更多详细信息!
Electron 团队很高兴地宣布发布 Electron 14.0.0! 您可以通过 npm 使用 npm install electron@latest
安装它,或从我们的发布网站下载它。 继续阅读有关此版本的详细信息,并请分享您的任何反馈!
显著变化
Electron 发布节奏变更
从 2021 年 9 月的 Electron 15 开始,Electron 将每 8 周发布一个新的主要稳定版本。 您可以在此处阅读完整详细信息。 Electron 15 将于 2021 年 9 月 1 日开始测试版,稳定版本将于 2021 年 9 月 21 日发布。 您可以在此处找到Electron 的公共时间线。 此外,Electron 将把支持的版本从最新的三个版本更改为最新的四个版本,直到 2022 年 5 月。 有关 Electron 版本控制的更多详细信息,请参阅我们的版本控制文档。
堆栈变更
- Chromium
93
- Node.js
14.17.0
- V8
9.3
突出特点
- 默认更改:
nativeWindowOpen
现在默认为true
。 (请参阅文档) - 子窗口不再从其父窗口继承 BrowserWindow 构造选项。 #28550
- 添加了新的
session.storagePath
API 来获取会话特定数据的磁盘路径。 #28665 - 添加了
@electron/remote
使用的process.contextId
。 #28007 - 在 Electron Fuse 后面添加了实验性的 cookie 加密支持。 #29492
有关新功能和更改的完整列表,请参阅 14.0.0 版本说明。
重大更改
以下是 Electron 14 中引入的重大更改。 有关这些和未来更改的更多信息,请访问计划的重大更改页面。
已删除:app.allowRendererProcessReuse
作为我们更紧密地与 Chromium 的安全、性能和可维护性进程模型保持一致的计划的一部分,app.allowRendererProcessReuse
属性已被删除。
有关更多详细信息,请参阅 #18397。
已删除:浏览器窗口关联
作为我们更紧密地与 Chromium 的安全、性能和可维护性进程模型保持一致的计划的一部分,构造新的 BrowserWindow
时的 affinity
选项已被删除。
有关更多详细信息,请参阅 #18397。
API 已更改:window.open()
可选参数 frameName
不再设置窗口的标题。此行为现在遵循 windowName
参数的本机文档中描述的规范。
如果您使用此参数设置窗口的标题,则可以使用 win.setTitle(title)
方法。
已删除:worldSafeExecuteJavaScript
worldSafeExecuteJavaScript
已被删除,没有替代方案。请确保您的代码在此属性启用时可以正常工作。自 Electron 12 以来,它已默认启用。
如果您使用 webFrame.executeJavaScript
或 webFrame.executeJavaScriptInIsolatedWorld
,您将受到此更改的影响。您需要确保这些方法返回的值受上下文桥 API 支持,因为这些方法使用相同的值传递语义。
默认更改:nativeWindowOpen
默认为 true
在 Electron 14 之前,默认情况下会调整 window.open
以使用 BrowserWindowProxy
。这意味着 window.open('about:blank')
不能用于同步打开可脚本化的子窗口,以及其他不兼容性。 nativeWindowOpen
不再是实验性的,现在是默认设置。
有关更多详细信息,请参阅Electron 中的 window.open 文档。
已删除:从父窗口继承 BrowserWindowConstructorOptions
在 Electron 14 之前,使用 window.open
打开的窗口会从其父窗口继承 BrowserWindow 构造选项,例如 transparent
和 resizable
。 从 Electron 14 开始,此行为已被删除,窗口不会从其父窗口继承任何 BrowserWindow 构造选项。
相反,请使用 setWindowOpenHandler
显式设置新窗口的选项。
webContents.setWindowOpenHandler((details) => {
return {
action: 'allow',
overrideBrowserWindowOptions: {
// ...
},
};
});
已移除:additionalFeatures
已弃用的 additionalFeatures
属性已从 WebContents 的 new-window
和 did-create-window
事件中移除。由于 new-window
使用位置参数,该参数仍然存在,但始终为空数组 []
。(注意:new-window
事件本身已被弃用,并已被 setWindowOpenHandler
取代。)窗口功能中的裸键现在将在选项对象中以键值 true
的形式呈现。
// Removed in Electron 14
// Triggered by window.open('...', '', 'my-key')
webContents.on('did-create-window', (window, details) => {
if (details.additionalFeatures.includes('my-key')) {
// ...
}
});
// Replace with
webContents.on('did-create-window', (window, details) => {
if (details.options['my-key']) {
// ...
}
});
已移除:remote
模块
在 Electron 12 中已弃用的 remote
模块现在已从 Electron 本身移除,并提取到一个单独的包 @electron/remote
中。@electron/remote
模块将主进程中的 JavaScript 对象桥接到渲染器进程。这使您可以访问仅在主进程中可用的对象,就像它们在渲染器进程中可用一样。这是 remote
模块的直接替代品。有关迁移说明和参考,请参阅模块的自述文件。
API 更改
- 添加了
BrowserWindow.isFocusable()
方法来确定窗口是否可聚焦。#28642 - 添加了
WebFrameMain.visibilityState
实例属性。#28706 - 将
disposition
、referrer
和postBody
添加到传递给使用setWindowOpenHandler
注册的窗口打开处理程序的 details 对象中。#28518 - 添加了
@electron/remote
使用的process.contextId
。 #28007 - 在 Electron Fuse 后面添加了实验性的 cookie 加密支持。 #29492
- 为
webRequest
监听器详细信息添加了缺失的resourceType
转换:font
、ping
、cspReport
、media
、webSocket
。#30050 - 添加了新的
session.storagePath
API 来获取会话特定数据的磁盘路径。 #28665 - 添加了对 macOS 上 Windows 控制覆盖层的支持。#29986
- 添加了通过
--log-file=.../path/to/file.log
将 Chromium 日志定向到文件的支持。此外,现在可以通过在第一个 JS 滴答期间附加命令行开关来从 JavaScript 启用日志记录。#29963 - 添加了对 node crypto 中 des-ede3 密码的支持。#27897
- 添加了一个
ContextBridgeMutability
功能,允许上下文桥对象被修改。#27348
移除/弃用更改
以下 API 已被移除或现在已弃用
- 在 Electron 12 中弃用后,
remote
模块已被移除。#25734 - 子窗口不再从其父窗口继承 BrowserWindow 构造选项。 #28550
- 从
new-window
和did-create-window
WebContents 事件中移除了已弃用的additionalFeatures
属性。#28548 - 移除了已弃用的
app.allowRendererProcessReuse
和 BrowserWindowaffinity
选项。#26874 - 当
uploadToServer
为 false 时,crashReporter.start
的submitURL
选项不再是必需的参数。#28105
对 11.x.y 的支持结束
根据项目的支持政策,Electron 11.x.y 已达到支持结束。鼓励开发人员和应用程序升级到较新版本的 Electron。
下一步
在短期内,您可以期望该团队继续专注于跟上构成 Electron 的主要组件(包括 Chromium、Node 和 V8)的开发。尽管我们小心翼翼地不承诺发布日期,但我们的计划是大约每季度发布带有这些组件新版本的 Electron 新主要版本。
有关 Electron 即将发布的版本中计划的重大更改的信息,请参阅我们的计划的重大更改。