跳转到主内容

Electron 19.0.0

· 阅读时间:约 4 分钟

Electron 19.0.0 已发布! 它包括升级到 Chromium 102, V8 10.2, 和 Node.js 16.14.2。 请阅读下文了解更多详情!


Electron 团队很高兴发布了 Electron 19.0.0! 您可以通过 npm install electron@latest 进行安装,或者从我们的 发布网站 下载它。 继续阅读有关此版本的详细信息,并请分享您的任何反馈!

重要变化

Electron 发布时间变更

该项目正在恢复其支持最新三个主要版本的早期政策。 查看我们的版本文档 以了解更多关于 Electron 版本控制和支持的详细信息。 暂时有四个主要版本,以帮助用户适应从 Electron 15 开始的新版本发布节奏。 您可以在此处阅读 完整详细信息

更改栈

破坏性 & API 更改

以下是 Electron 19 中引入的破坏性变化。 有关这些和未来变化的更多信息可在 计划的破坏性变化 页面找到。

在 Linux 上不受支持: .skipTaskbar

BrowserWindow constructor 选项 skipTaskbar 在 Linux 上不再支持。 在 #33226 中更改

已移除 WebPreferences.preloadURL

半文档化的 preloadURL 属性已从 Web 首选项中删除。 #33228. 使用 WebPreferences.preload 代替。

终止对 15.x.y 和 16.x.y 的支持

Electron 14.x.y 和 15.x.y 都已终止支持。 该博客文章 使 Electron 恢复到其支持最新三个主要版本的 早期政策 。 鼓励开发人员和应用程序升级到较新版本的 Electron。

E15 (9月21日)E16 (11月21日)E17 (2月22日)E18 (3月22日)E19 (5月22日)
15.x.y16.x.y17.x.y18.x.y19.x.y
14.x.y15.x.y16.x.y17.x.y18.x.y
13.x.y14.x.y15.x.y16.x.y17.x.y
12.x.y13.x.y14.x.y15.x.y--

下一步做什么

在短期内,您可以期望该团队继续专注于跟上构成 Electron 的主要组件的开发,包括 Chromium,Node 和 V8。 虽然我们谨慎地不对发布日期做出承诺,但我们的计划是大约每2个月发布一次带有新版本组件的主要版本的 Electron。

您可以在此处找到 Electron 的公开时间表

有关这些和未来变化的更多信息可在 计划的破坏性变化 页面找到。

S3 Bucket Migration

· 阅读时间:约 2 分钟

Electron is changing its primary S3 bucket, you may need to update your build scripts


What is happening?

A significant amount of Electron's build artifacts are uploaded to an S3 bucket called gh-contractor-zcbenz. As part of ongoing infrastructure/ownership migrations that started way back in 2020, we will be changing everything that used gh-contractor-zcbenz from its old home in S3 to a new storage system hosted at https://artifacts.electronjs.org. The path prefix that most of our assets use is changing slightly as well. Examples are included below:

Before: https://gh-contractor-zcbenz.s3.amazonaws.com/atom-shell/dist/v17.0.0/node.lib After: https://artifacts.electronjs.org/headers/dist/v17.0.0/node.lib

The important things here are the Hostname changed and the /atom-shell prefix changed. Another example, this time for debug symbols:

Before: https://gh-contractor-zcbenz.s3.amazonaws.com/atom-shell/symbols/path/to/symbol.pdb After: https://artifacts.electronjs.org/symbols/path/to/symbol.pdb

Again, the hostname changed and the /atom-shell prefix was changed.

How might this impact you?

Anyone using standard build tooling such as electron-rebuild, electron-packager or @electron/get won't have to do anything. This should be the majority of people.

For anyone directly referencing the S3 bucket, you must update your reference to point at the hostname and update the path as well.

What about existing data?

Most data that existed on the gh-contractor-zcbenz bucket has been cloned into the new storage system. This means all debug symbols and all headers have been copied. If you relied on some data in that bucket that hasn't been copied over please raise an issue in electron/electron and let us know.

The current gh-contractor-zcbenz S3 bucket will not be actively deleted. However, we can't guarantee how long that bucket will be left alive. We strongly recommend updating to target the new bucket as soon as possible.

Electron 18.0.0

· 阅读时间:约 5 分钟

Electron 18.0.0 已发布! 它包括升级到 Chromium 100, V8 10.0, 和 Node.js 16.13.2。 请阅读下文了解更多详情!


Electron 团队很高兴发布了 Electron 18.0.0.0! 您可以通过 npm install electron@latest 进行安装,或者从我们的 发布网站 下载它。 继续阅读有关此版本的详细信息,并请分享您的任何反馈!

值得注意的变化

Electron 发布时间变更

从 Electron 15 开始,Electron 将每 8 周发布一个新的主要稳定版本。 您可以在此处阅读 完整详细信息

此外,Electron 将会改变支持的版本,从最新的三个版本改为最新的四个版本,直到 2022 年 5 月。 关于 Electron 版本的更多详细信息,请看我们的 版本管理文档 2022 年 5 月以后,我们将回到支持最新的三个版本。

Stack 更改

主要特性

  • 增加 ses.setCodeCachePath() API,用于设置代码缓存目录。 #33286
  • 移除了基于旧的 BrowserWindowProxywindow.open 实现。 这也删除了 webPreferences 中的 nativeWindowOpen 选项。 #29405
  • WebContents 中增加了 'focus' 和 'blur' 事件。 #25873
  • 在 MacOS 上添加了替换菜单角色:showSubstitutions``toggleSmartQuotes``toggleSmartDashes``toggleTextReplacement #32024
  • Added a first-instance-ack event to the app.requestSingleInstanceLock() flow, allowing users to seamlessly transmit data from the first instance to the second instance. #31460
  • setBackgroundColor 中增加了更多颜色的支持。 #33364

有关新功能和变更的完整列表,请参阅 18.0.0 发布通知

破坏性 & API 更改

以下是 Electron 18 中引入的突破性变化。 有关这些和未来变化的更多信息可在 计划的突破性变化 页面找到。

已移除: nativeWindowOpen

在 Electron 15之前, window.open 默认使用 BrowserWindowProxy。 这意味着 window.open('about:blank') 无法打开可同步编写脚本的子窗口,以及有其他不兼容之处。 自 Electron 15 起, nativeWindowOpen 将默认启用。

有关更多详细信息,请参阅 Electron 中的 window.open 文档。 删除此功能的 PR: #29405

终止对 14.x.y 的支持

根据项目的支持政策,Electron 14.x.y 已经达到了支持的终点。 我们鼓励开发者和应用程序升级到更新的 Electron版本。

从 Electron 15 开始,我们已经将支持的版本从最新的三个版本改为最新的四个版本,直到 2022 年 5 月的 Electron 19。 在 Electron 19 之后,我们将回归到支持最新的三个版本。 此版本支持变化是我们新的节奏变化的一部分。 请参阅 我们的博客文章 ,了解的完整详细信息。

E15 (9 月 21 号)E16 (11 月 21 号)E17 (2 月 22 号)E18 (3 月 22 号)E19 (5 月 22 号)
15.x.y16.x.y17.x.y18.x.y19.x.y
14.x.y15.x.y16.x.y17.x.y18.x.y
13.x.y14.x.y15.x.y16.x.y17.x.y
12.x.y13.x.y14.x.y15.x.y--

接下来

在短期内,你可以期待我们的团队继续专注于跟上构成 Electron 的主要组件的发展,包括 Chromium、Node 和 V8。 尽管我们很谨慎,不对发布日期作出承诺,但我们的计划是大约每两个月发布一次 Electron 的主要版本和这些组件的新版本。

您可以在此处找到 Electron的公开时间表

有关这些和未来变化的更多信息可在 计划的突破性变化 页面找到。

Google 代码之夏 2022

· 阅读时间:约 3 分钟

Electron 团队很高兴地宣布,今年我们将首次参加 Google 代码之夏(Summer of Code)!


什么是 Google 代码之夏?

Google Summer of Code(GSoC)是一项年度指导计划,将开源软件项目与潜在贡献者联系起来。 以前只对学生开放,任何18岁及以上的人现在都可以注册GSoC。

有关更多信息,请查看 Summer of Code 主页

我该如何参加?

您有兴趣与Electron合作吗? 如果您是新手或初学者开源贡献者,我们欢迎您申请!

为了被选为Google Summer of Code的电子贡献者,您需要提交申请。 申请将于2022年4月4日 开放,并于2022年4月19日结束。 您可以在此处关注 Google 代码之夏应用程序指南的更新

想要申请吗? 首先,查看我们准备的 五个项目创意草案 。 所有列出的想法目前都开放供提案。 我们也愿意接受不在拟议项目清单上的新想法。

您的申请应包括:

  • 您的提案,这是一份书面文件,详细描述了您计划在夏季实现的目标。
  • 您作为开发者的背景。 如果您有简历,请附上一份副本,否则请告诉我们您过去的经验,重点是相关的技术经验。

您的 Electron 应用的提交内容的详细指南在此处。

您还可以通读 官方 GSoC 学生/贡献者指南 ,了解有关准备提案的重要提示。

如果您想讨论项目提案或有疑问,请移步我们的 #gsoc-general Discord 频道!

引用

Electron 17.0.0

· 阅读时间:约 4 分钟

Electron 17.0.0 已发布! 它包括升级到 Chromium 98, V8 9.8, 和 Node.js 16.13.0。 请阅读下文了解更多详情!


Electron 团队很高兴发布了 Electron 17.0.0.0! 您可以通过 npm install electron@later 进行安装,或者从我们的 发布网站 下载它。 继续阅读有关此版本的详细信息,并请分享您的任何反馈!

重要变化

Electron 发布时间变更

从 Electron 15 开始,Electron 将每 8 周发布一个新的主要稳定版本。 您可以在此处阅读 完整详细信息

此外,Electron 将会改变支持的版本,从最新的三个版本改为最新的四个版本,直到 2022 年 5 月。 关于 Electron 版本的更多详细信息,请看我们的 版本管理文档 2022 年 5 月以后,我们将回到支持最新的三个版本。

架构(Stack)更新

主要特性

  • Added webContents.getMediaSourceId(), can be used with getUserMedia to get a stream for a WebContents. #31204
  • Deprecates webContents.getPrinters() and introduces webContents.getPrintersAsync(). #31023
  • desktopCapturer.getSources is now only available in the main process. #30720

有关新功能和变更的完整列表,请参阅 17.0.0 发布通知

重大更改

以下是 Electron 17 中引入的破坏性变更。 有关这些和未来变化的更多信息可在 计划的突破性变化 页面找到。

desktopCapturer.getSources in the renderer

The desktopCapturer.getSources API is now only available in the main process. This has been changed in order to improve the default security of Electron apps.

API 更改

There were no API changes in Electron 17.

Removed/Deprecated Changes

  • Usage of the desktopCapturer.getSources API in the renderer has been removed. See here for details on how to replace this API in your app.

终止对 13.x.y 的支持

根据项目的支持政策,Electron 13.x.y 已经达到了支持的终点。 我们鼓励开发者将应用程序升级到更新的 Electron 版本。

从 Electron 15 开始,我们已经将支持的版本从最新的三个版本改为最新的四个版本,直到 2022 年 5 月的 Electron 19。 在 Electron 19 之后,我们将回归到支持最新的三个版本。 此版本支持变化是我们新的节奏变化的一部分。 请参阅 我们的博客文章 ,了解的完整详细信息。

E15 (2021年9月)E16 (2021年11月)E17 (2022年2月)E18 (2022年3月)E19 (2022年5月)
15.x.y16.x.y17.x.y18.x.y19.x.y
14.x.y15.x.y16.x.y17.x.y18.x.y
13.x.y14.x.y15.x.y16.x.y17.x.y
12.x.y13.x.y14.x.y15.x.y--

接下来

在短期内,您可以期待团队继续专注于跟上构成 Electron 的主要组件的开发,包括 Chromium、Node 和 V8。 虽然我们谨慎地不对发布日期做出承诺,但我们的计划是大约每2个月发布一次带有新版本组件的主要版本的 Electron。

您可以在此处找到 Electron的公开时间表

有关这些和未来变化的更多信息可在 计划的突破性变化 页面找到。

Spectron 弃用通知

· 阅读时间:约 2 分钟

Spectron 将于 2022 年 2 月 1 日弃用。


Beginning in February 2022, Spectron will be officially deprecated by the Electron team.

Why Deprecate Spectron?

While Spectron has consistently put out new releases for each new version of Electron, the project has had very little maintenance and improvements for well over a year, and currently has no full-time maintainers. With the remote module moving outside of Electron core and into an external module in Electron 14, Spectron will require a major rewrite to continue working reliably.

After reviewing several available options for Spectron's continued maintenance, the Electron team has decided to deprecate Spectron in 2022.

Deprecation Timeline

The following is our planned deprecation timeline:

  • November 2021 - January 2022: The Electron team will continue to accept pull requests from the community.
  • January 2022: A final version of announcement warning about Spectron's deprecation will be released.
  • February 1, 2022: Spectron's repo will be marked as "archived". No more pull requests will be accepted.

Following February 1st, 2022, Electron will continue to leave the Spectron repo up indefinitely, so that others are welcome to fork or use the existing code for their projects. We hope this will help provide a longer transition to any projects that may still depend on Spectron.

Alternatives to Spectron

如果您当前在项目中使用 Spectron,并希望迁移到替代测试解决方案,您可以在此处阅读我们的 自动化测试指南

我们目前有其他几种推荐替代Spectron的办法,包括Playwright和WebDriverIO。 Official tutorials for each option can be found in our Automated Testing documentation.

接下来

We here on the Electron team appreciate you using Spectron and Electron. 我们理解,你们中的许多人都依赖 Spectron 来测试您的应用程序,我们希望让这种过渡尽可能轻松。 感谢您选择Electron!

Electron 16.0.0

· 阅读时间:约 5 分钟

Electron 16.0.0 已发布! 它包括升级到 Chromium 96, V8 9.6, 和 Node.js 16.9.1。 请阅读下文了解更多详情!


Electron 团队很高兴发布了 Electron 16.0.0.0! 您可以通过 npm install electron@later 进行安装,或者从我们的 发布网站 下载它。 继续阅读有关此版本的详细信息,并请分享您的任何反馈!

重要变化

Electron 发布时间变更

从 Electron 15 开始,Electron 将每 8 周发布一个新的主要稳定版本。 您可以在此处阅读 完整详细信息

此外,Electron 将会改变支持的版本,从最新的三个版本改为最新的四个版本,直到 2022 年 5 月。 关于 Electron 版本的更多详细信息,请看我们的 版本管理文档 2022 年 5 月以后,我们将回到支持最新的三个版本。

架构(Stack)更新

主要特性

  • Now supports the WebHID API. #30213
  • Add data parameter to app.requestSingleInstanceLock to share data between instances. #30891
  • Pass securityOrigin to media permissions request handler. #31357
  • Add commandLine.removeSwitch. #30933

有关新功能和变更的完整列表,请参阅 16.0.0 发布通知

重大更改

以下是 Electron 16 中引入的破坏性变更。 有关这些和未来变化的更多信息可在 计划的突破性变化 页面找到。

Building Native Modules

If your project uses node-gyp to build native modules, you may need to call it with --force-process-config depending on your project's setup and your Electron version. More information about this change can be found at #2497.

行为改变:crashReporter 实现切换到 Linux 上的 Crashpad

The underlying implementation of the crashReporter API on Linux has changed from Breakpad to Crashpad, bringing it in line with Windows and Mac. As a result of this, child processes are now automatically monitored, and calling process.crashReporter.start in Node child processes is no longer needed (and is not advisable, as it will start a second instance of the Crashpad reporter).

There are also some subtle changes to how annotations will be reported on Linux, including that long values will no longer be split between annotations appended with __1, __2 and so on, and instead will be truncated at the (new, longer) annotation value limit.

API 更改

There were no API changes in Electron 16.

Removed/Deprecated Changes

  • Usage of the desktopCapturer.getSources API in the renderer has been deprecated and will be removed. This change improves the default security of Electron apps. See here for details on how to replace this API in your app.

终止对 12.x.y 的支持

根据项目的支持政策,Electron 12.x.y 已经达到了支持的终点。 我们鼓励开发者将应用程序升级到更新的 Electron 版本。

从 Electron 15 开始,我们已经将支持的版本从最新的三个版本改为最新的四个版本,直到 2022 年 5 月的 Electron 19。 在 Electron 19 之后,我们将回归到支持最新的三个版本。 此版本支持变化是我们新的节奏变化的一部分。 请参阅 我们的博客文章 ,了解的完整详细信息。

E15 (2021年9月)E16 (2021年11月)E17 (2022年2月)E18 (2022年3月)E19 (2022年5月)
15.x.y16.x.y17.x.y18.x.y19.x.y
14.x.y15.x.y16.x.y17.x.y18.x.y
13.x.y14.x.y15.x.y16.x.y17.x.y
12.x.y13.x.y14.x.y15.x.y--

接下来

在短期内,您可以期待团队继续专注于跟上构成 Electron 的主要组件的开发,包括 Chromium、Node 和 V8。 虽然我们谨慎地不对发布日期做出承诺,但我们的计划是大约每2个月发布一次带有新版本组件的主要版本的 Electron。

您可以在此处找到 Electron的公开时间表

有关这些和未来变化的更多信息可在 计划的突破性变化 页面找到。

安静地点 (2021年12月)

· 阅读时间:约 2 分钟

2021年12月Electron项目将进入暂停状态,然后在2022年1月全速恢复。

通过 GIPHY


12月保持不变的内容

  1. 必要时将发布零日和其他与安全相关的主版本。 安全事件应该通过 SECURITY.md 报告。
  2. 行为准则报告和审核将继续。

12月变动的内容

  1. 12 月没有新的 Beta 版或稳定版。 12 月的最后两周没有Nightly版本。
  2. 除了少数例外,不会合并请求的审核或合并。
  3. 任何仓库上都不会有问题跟进更新。
  4. 维护人员不会提供 Discord 调试帮助。
  5. 社交媒体暂停更新内容。

为什么会发生这种情况?

简而言之,虽然维护者对项目感到满意并参与其中,但世界很累。 对于大多数公司来说,12 月是一个安静的月份,所以我们希望给我们的维护者一个充电的机会。 我们鼓励其他项目考虑采取类似措施。

我是否应该担心Electron的未来?

否。 我们之所以能够迈出这一步,是因为项目进展顺利。 每个人都期待着2022年的到来,我们期待着会有好事!

Electron 15.0.0

· 阅读时间:约 6 分钟

Electron 15.0.0 已发布! 它包括升级到 Chromium 94, V8 9.4, 和 Node.js 16.5.0。 我们已经添加了多个针对 window.open 的 API 更新、bug 修复和常规改进。 请阅读下文了解更多详情!


Electron 团队很高兴发布了 Electron 15.0.0.0! 您可以通过 npm install electron@later 进行安装,或者从我们的 发布网站 下载它。 继续阅读有关此版本的详细信息,并请分享您的任何反馈!

重要变化

Electron 发布时间变更

从 Electron 15 开始,Electron 将每隔8周发布一个新的主要稳定版本。 您可以在此处阅读 完整详细信息

此外,Electron 将在 2022 年 5 月之前,将支持的版本从最新的三个版本更改为最新的四个版本。 查看我们的版本文档以了解更多关于 Electron 版本的详细信息。

架构(Stack)更新

Highlight Features

  • nativeWindowOpen: true 不再是实验性的,现在是默认设置。
  • 新增了 safeStorage 字符串加密 API。 #30430
  • WebContents 新增 'frame-created' 事件,该事件在页面中创建帧时发出。 #30801
  • BrowserWindowwill-resize 事件添加了用以调整窗口大小的 edge 信息。 #29199

有关新功能和变更的完整列表,请参阅 15.0.0 发布通知

重大更改

以下是 Electron 15 中引入的突破性变化。 有关这些和未来变化的更多信息可在 计划的突破性变化 页面找到。

默认值更改:nativeWindowOpen 默认设为 true

在 Electron 15之前, window.open 默认使用 BrowserWindowProxy。 这意味着 window.open('about:blank') 无法打开可同步编写脚本的子窗口,以及有其他不兼容之处。 nativeWindowOpen: true 不再是实验性的,现在是默认设置。

有关更多详细信息,请参阅 Electron 中 window.open 的文档。

API 更改

  • WebContents 新增 'frame-created' 事件,该事件在页面中创建帧时发出。 #30801
  • 新增了 safeStorage 字符串加密 API。 #30430
  • dialog.showMessageBox 新增了 signal 选项。 #26102
  • 加入 Electron Fuse,用于在应用程序加载的 app.asar 文件上强制执行代码签名。 要求最新的 asar 模块(v3.1.0 或更高版本)。 #30900
  • 加入 fuses 以在打包好的应用里,禁用 NODE_OPTIONS--inspect 调试参数。 #30420
  • 新增 MenuItem.userAccelerator 属性以读取用户分配的 macOS 快捷键的覆盖。 #26682
  • 新增 app.runningUnderARM64Translation 属性以检测在 Rosetta 在 Apple Silicon 或 WOW 在 Windows 上运行 ARM 时的情况。 #29168
  • 添加新的 imageAnimationPolicy Web 首选项来控制图像的动画方式。 #29095
  • 增加支持通过 context bridge 发送 Blob。 #29247

Removed/Deprecated Changes

没有 API 被删除或废弃。

支持版

此外,Electron 将在 2022 年 5 月之前,将支持的版本从最新的三个版本更改为最新的四个版本。 在 Electron 19 之后,我们将回归到支持最新的三个版本。 此版本支持变化是我们新的节奏变化的一部分。 请参阅 我们的博客文章 ,了解的完整详细信息。

鼓励开发者和应用程序升级到 Electron 的较新版本。

E15 (2021年9月)E16 (2021年11月)E17 (2022年2月)E18 (2022年3月)E19 (2022年5月)
15.x.y16.x.y17.x.y18.x.y19.x.y
14.x.y15.x.y16.x.y17.x.y18.x.y
13.x.y14.x.y15.x.y16.x.y17.x.y
12.x.y13.x.y14.x.y15.x.y--

接下来

短期内, 您可以期待团队继续专注于跟上 Electron 主要组件的开发工作。 包括 Chromium, Node 和 V8。 尽管我们谨慎地避免对发布日期做出承诺,但我们的计划是大约每季度发布一次 Electron 的新主要版本以及这些组件的新版本。

您可以在此处找到 Electron的公开时间表

有关这些和未来变化的更多信息可在 计划的突破性变化 页面找到。

Electron 14.0.0

· 阅读时间:约 7 分钟

Electron 14.0.0 已发布! 它包括了到 Chromium 93 和 V8 9.3 的更新。 我们添加了多个 API 更新、错误修复和一般改进。 请阅读下文了解更多详情!


Electron 团队很高兴发布了 Electron 14.0.0.0! You can install it with npm via npm install electron@latest or download it from our releases website. Continue reading for details about this release and please share any feedback you have!

重要变化

Electron 发布时间变更

Beginning in September 2021 with Electron 15, Electron will release a new major stable version every 8 weeks. 您可以在此处阅读 完整详细信息。 Electron 15 will begin beta on September 1, 2021 and stable release will be on September 21, 2021. 您可以在此处找到 Electron 的公开时间表。 Additionally, Electron will be changing supported versions from latest three versions to latest four versions until May 2022. See see our versioning document for more detailed information about versioning in Electron.

架构(Stack)更新

Highlight Features

  • Default Changed: nativeWindowOpen now defaults to true. (see docs)
  • Child windows no longer inherit BrowserWindow construction options from their parents. #28550
  • Added new session.storagePath API to get the path on disk for session-specific data. #28665
  • Added process.contextId used by @electron/remote. #28007
  • Added experimental cookie encryption support behind an Electron Fuse. #29492

有关新功能和变更的完整列表,请参阅 14.0.0 发布通知

重大更改

以下是 Electron 14 中引入的破坏性变更。 More information about these and future changes can be found on the Planned Breaking Changes page.

已移除: app.allowRendererProcessReuse

The app.allowRendererProcessReuse property has been removed as part of our plan to more closely align with Chromium's process model for security, performance and maintainability.

更多信息见:#18397

移除: Browser Window Affinity

The affinity option when constructing a new BrowserWindow has been removed as part of our plan to more closely align with Chromium's process model for security, performance and maintainability.

更多信息见:#18397

API 更改: window.open()

The optional parameter frameName no longer sets the title of the window. This behavior now follows the specification described by the native documentation for the windowName parameter.

If you were using this parameter to set the title of a window, you can instead use the win.setTitle(title) method.

已移除: worldSafeExecuteJavaScript

worldSafeExecuteJavaScript has been removed with no alternative. Please ensure your code works with this property enabled. It has been enabled by default since Electron 12.

若您使用了 webFrame.executeJavaScriptwebFrame.executeJavaScriptInIsolatedWorld,这个改动会对您造成影响。 您将需要确保这些方法中任何一种返回的值都被 Context Bridge API 支持,因为这些方法使用相同的值传递语意。

默认更改: nativeWindowOpen 默认为 true

在 Electron 14之前, window.open 默认使用 BrowserWindowProxy。 这意味着 window.open('about:blank') 无法再来打开可同步脚本的子窗口,以及其他不兼容的情况。 nativeWindowOpen 不再是实验性的,现在是默认值

更多详细信息: window.open

移除: 从父窗口继承的 BrowserWindowConstructorOptions

在Electron 14之前,使用 window.open 打开的窗口将继承 BrowserWindow构造函数选项,例如 transparentresizable ,这些选项来自其父窗口 。 Beginning with Electron 14, this behavior has been removed and windows will not inherit any BrowserWindow constructor options from their parents.

相反,请使用 setWindowOpenHandler显式设置新窗口的选项:

webContents.setWindowOpenHandler((details) => {
return {
action: 'allow',
overrideBrowserWindowOptions: {
// ...
},
};
});

已移除: additionalFeatures

WebContents 的 new-windowdid-create-window 事件中已弃用的 additionalFeatures 属性已被删除。 由于 new-window 使用 positional 参数,因此该参数仍然存在,但始终 空数组 []。 (Note: the new-window event itself is already deprecated and has been replaced by setWindowOpenHandler.) 窗口功能中的 Bare keys 现在会显示为选项对象中值为 true 的 key。

// 在 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 模块

Deprecated in Electron 12, the remote module has now been removed from Electron itself and extracted into a separate package, @electron/remote. The @electron/remote module bridges JavaScript objects from the main process to the renderer process. This lets you access main-process-only objects as if they were available in the renderer process. This is a direct replacement for the remote module. See the module's readme for migration instructions and reference.

API 更改

  • Added BrowserWindow.isFocusable() method to determine whether a window is focusable. #28642
  • Added WebFrameMain.visibilityState instance property. #28706
  • Added disposition, referrer and postBody to the details object passed to the window open handler registered with setWindowOpenHandler. #28518
  • Added process.contextId used by @electron/remote. #28007
  • Added experimental cookie encryption support behind an Electron Fuse. #29492
  • Added missing resourceType conversions for webRequest listener details: font, ping, cspReport, media, webSocket. #30050
  • Added new session.storagePath API to get the path on disk for session-specific data. #28665
  • Added support for Windows Control Overlay on macOS. #29986
  • Added support for directing Chromium logging to a file with --log-file=.../path/to/file.log. Also, it's now possible to enable logging from JavaScript by appending command-line switches during the first JS tick. #29963
  • Added support for the des-ede3 cipher in node crypto. #27897
  • Added a ContextBridgeMutability feature that allows context bridge objects to be mutated. #27348

Removed/Deprecated Changes

The following APIs have been removed or are now deprecated:

  • The remote module has been removed after being deprecated in Electron 12. #25734
  • Child windows no longer inherit BrowserWindow construction options from their parents. #28550
  • Removed deprecated additionalFeatures property from new-window and did-create-window WebContents events. #28548
  • Removed the deprecated app.allowRendererProcessReuse and BrowserWindow affinity options. #26874
  • The submitURL option for crashReporter.start is no longer a required argument when uploadToServer is false. #28105

终止对 11.x.y 的支持

根据项目的支持政策,Electron 11.x.y 已经达到了支持的终点。 我们鼓励开发者将应用程序升级到更新的 Electron 版本。

接下来

在短期内,您可以期待团队继续专注于跟上构成 Electron 的主要组件的开发,包括 Chromium、Node 和 V8。 尽管我们谨慎地避免对发布日期做出承诺,但我们的计划是大约每季度发布一次 Electron 的新主要版本以及这些组件的新版本。

For information on planned breaking changes in upcoming versions of Electron, see our Planned Breaking Changes.