31.0.0 版本更新说明:
Stack Upgrades
- Chromium: 更新至126.0.6478.36版本。
- Node.js: 更新至20.14.0版本,详情可见其[官方博客文章](Node 20.14.0 blog post)。
- V8引擎: 升级至12.6版本。
重大变更(Breaking Changes)
- 在macOS上,
window.flashFrame(bool)
现在会连续闪烁。 - Chromium已更新至126.0.6445.0,移除了WebSQL支持。
- Chromium更新至125.0.6412.0,修改了
nativeImage.toDataURL
的行为,以保留PNG的颜色空间。
新增功能(Features)
- 新增
webContents
实例属性navigationHistory
,结合navigationHistory.getEntryAtIndex
方法,允许应用检索浏览历史中的任意导航条目的URL和标题。 Session.clearData
API新增了options参数。- 在utility进程中使用net模块发起的请求现在支持代理配置。
- 在
navigator.serial
中增加了对服务类ID请求蓝牙端口的支持。 - 引入了对
NODE_EXTRA_CA_CERTS
的支持。 - 扩展了
webContents.setWindowOpenHandler
,支持手动创建BrowserWindow
。 - 实现了文件系统API的支持。
Session
中新增了clearData
方法。WebContentsView
现在可以接受预先存在的webContents
对象。
改进(Improvements)
WebContentsView
现在可以接受预先存在的webContents
对象,增强复用能力。- 当
ses.cookies.set
失败时,提供了更详细的错误信息。 - 重新添加了检查应用是否作为登录服务启动的功能(仅限macOS)。
移除/废弃(Removed/Deprecated)
context-menu
参数中的inputFieldType
属性已被移除。
修复(Fixes)
- 修复了
fs.{readdir|readdirSync}
及其Promise版本中缺少递归选项支持的问题。 - 在Asar归档中调用
fs.{readdir|readdirSync}
时,增加了对withFileTypes
的支持。 - 修复了macOS上的ASAN构建问题。
- 解决了窗口禁用了最大化但启用了WCO仍显示最大化按钮的bug。
- 修复了子视图在
BrowserWindow
中可能遇到的问题。 - 修复了使用
showInactive
显示的窗口空白的问题。 - 修复了
UtilityProcess
中可能不正确的退出代码。 - 修复了
originalFs.promises.cp
的实现问题。
在早期版本中也有的修复(Also in earlier versions)...
BrowserWindow.show()
现在能正确地恢复macOS上非活动应用的焦点。- GPU进程崩溃后,Electron在离屏渲染模式下不再绘制。
- 确保仅在macOS 14.4及以上版本使用ScreenCaptureKit,避免权限提示。
- 修复了
chrome://process-internals
加载失败的问题。 - 解决了
shell.showItemInFolder
在路径包含正斜杠时不打开Windows资源管理器的问题。 - 修复了在
addChildView
中添加视图为自己的子视图时引发的崩溃。 - 修复了多次通过
addChildView
添加相同WebContentsView
导致的崩溃。 - 修复了扩展卸载时
chrome.scripting
可能导致的崩溃。 - 解决了在
BrowserView
上调用setAutoResize
时的错误。 - 修复了Ubuntu中窗口最大化和重布局时的不一致崩溃问题。
- 解决了Windows上静默打印导致渲染输出极小的问题。
- 修复了即使在
BrowserWindow
的关闭事件上设置了preventDefault
,BrowserView
的webContents
仍被销毁的问题。 - 解决了
app.getLoginItemSettings
未能正确抛出错误的问题。 - 修正了
app.setLoginItemSettings
不当检查loginItemService
的问题。 - 修复了从
WebContentsView
内部的webContents
调用document.requestFullscreen
不起作用的问题。 - 解决了macOS上
recentDocuments
不正确填充的问题。 - 修复了在
BaseWindow
上调用setTitleBarOverlay
不如预期工作的问题。 - 解决了macOS上
user-did-{resign|become}-active
事件不正确触发的问题。 - 修复了
webContents.navigationHistory
不是可枚举属性的问题。 - 解决了在不传入或传入
undefined
时,webContents.print(options)
失败的问题。 - 修复了使用Badging API设置的徽章文本在Windows上不再正确显示的问题。
- 修复了在Windows和Linux上调用
window.center()
时窗口位置错误居中的问题。 - 修复了当对话框父窗体为
BaseWindow
而不是BrowserWindow
时对话框无法正常工作的问题。 - 解决了Windows上表情符号处理不当的问题。
- 解决了在Mac上显示或聚焦面板窗口会激活应用的问题。
- 修复了某些情况下调用WebUSB方法可能引起的崩溃。
- 修复了
serial-port-added
事件未正确遵守serial.requestPort()
设置的过滤器的问题。 - 解决了在某些情况下调用
BrowserWindow.center()
窗口位置错误居中的问题。 - 修复了Linux上升级后的崩溃问题。
- 解决了在libnotify 0.8.x和portal环境下
Notification::Close()
崩溃的问题。 - 解决了X11上窗口最大化时的崩溃问题。
- 解决了当
protocol.handle()
异步处理传入数据时的数据损坏问题。 - 解决了使用libc++编译时缺少
<__assertion_handler>
头文件的问题。 - 解决了在渲染进程中调用
nativeImage.createThumbnailFromPath
和shell.openExternal
不解析的问题。 - 将
WebviewTag.webpreferences
的类型修复回字符串。 - 修复了通过Chrome DevTools协议使用
Storage.{get|set|clear}Cookies
的问题。 - 改进了在使用Windows控制覆盖时Windows 11上标题按钮的外观。
BrowserWindow.focus()
现在能在macOS上正确恢复非活动应用的焦点。- 解决了即使在
BrowserWindow
的关闭事件上设置了preventDefault
,BrowserView
的webContents
仍被销毁的问题。 - 解决了某些情况下
contentWindow.document.fonts.ready
永远不会解析的问题。 - 修复了在
//shell_dialogs
门户实现中选择多个文件/文件夹的问题。 - 还有其他一些回溯修复和文档更改。
通知(Notices)
- 停止对Electron 28.x.y系列的支持,鼓励开发者和应用升级至更高版本。