跳到主要內容

Electron 14.0.0

·閱讀時間 6 分鐘

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 版本控制的更詳細資訊。

堆疊變更

重點功能

  • 預設值已變更:nativeWindowOpen 現在預設為 true(請參閱文件)
  • 子視窗不再繼承其父視窗的 BrowserWindow 建構選項。#28550
  • 新增 session.storagePath API,以取得磁碟上特定於工作階段的資料路徑。#28665
  • 新增 process.contextId,由 @electron/remote 使用。#28007
  • Electron 保險絲後方新增實驗性 Cookie 加密支援。#29492

如需完整的新功能和變更清單,請參閱 14.0.0 版本資訊

重大變更

以下是 Electron 14 中引入的重大變更。有關這些變更和未來變更的更多資訊,可以在計畫中的重大變更頁面上找到。

已移除:app.allowRendererProcessReuse

app.allowRendererProcessReuse 屬性已移除,作為我們為了更符合 Chromium 安全性、效能和可維護性處理程序模型計畫的一部分。

如需更詳細的資訊,請參閱#18397

已移除:瀏覽器視窗親和性

建構新的 BrowserWindow 時的 affinity 選項已移除,作為我們為了更符合 Chromium 安全性、效能和可維護性處理程序模型計畫的一部分。

如需更詳細的資訊,請參閱#18397

API 已變更:window.open()

選用參數 frameName 不再設定視窗的標題。此行為現在遵循 windowName 參數的原生文件中所述的規格。

如果您使用此參數來設定視窗的標題,則可以改用 win.setTitle(title) 方法。

已移除:worldSafeExecuteJavaScript

已移除 worldSafeExecuteJavaScript,沒有替代方案。請確保您的程式碼在此屬性啟用時能正常運作。自 Electron 12 以來,預設已啟用此屬性。

如果您使用 webFrame.executeJavaScriptwebFrame.executeJavaScriptInIsolatedWorld,您將會受到此變更的影響。您需要確保這些方法傳回的值都受到 Context Bridge API 的支援,因為這些方法使用相同的數值傳遞語義。

預設值已變更:nativeWindowOpen 預設為 true

在 Electron 14 之前,window.open 預設會被模擬為使用 BrowserWindowProxy。這表示 window.open('about:blank') 無法用於同步開啟可編寫指令碼的子視窗,以及其他不相容的問題。nativeWindowOpen 不再是實驗性的,現在是預設值。

如需更多詳細資訊,請參閱 Electron 中的 window.open 的文件。

已移除:BrowserWindowConstructorOptions 從父視窗繼承的行為

在 Electron 14 之前,使用 window.open 開啟的視窗會從其父視窗繼承 BrowserWindow 的建構函式選項,例如 transparentresizable。從 Electron 14 開始,此行為已移除,視窗將不再從其父視窗繼承任何 BrowserWindow 建構函式選項。

相反地,請使用 setWindowOpenHandler 為新視窗明確設定選項

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

已移除:additionalFeatures

已棄用的 WebContents new-windowdid-create-window 事件中的 additionalFeatures 屬性已被移除。由於 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 模組的直接替代品。請參閱 模組的 readme 以獲取遷移說明和參考。

API 變更

  • 新增 BrowserWindow.isFocusable() 方法,以判斷視窗是否可聚焦。#28642
  • 新增 WebFrameMain.visibilityState 實例屬性。#28706
  • dispositionreferrerpostBody 新增至傳遞給使用 setWindowOpenHandler 註冊的視窗開啟處理程式的詳細資訊物件。#28518
  • 新增 process.contextId,由 @electron/remote 使用。#28007
  • Electron 保險絲後方新增實驗性 Cookie 加密支援。#29492
  • webRequest 監聽器詳細資訊新增遺失的 resourceType 轉換:fontpingcspReportmediawebSocket#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-windowdid-create-window WebContents 事件中移除已棄用的 additionalFeatures 屬性。#28548
  • 移除已棄用的 app.allowRendererProcessReuse 和 BrowserWindow affinity 選項。#26874
  • uploadToServer 為 false 時,crashReporter.startsubmitURL 選項不再是必要參數。#28105

11.x.y 版本終止支援

根據專案的支援政策,Electron 11.x.y 已終止支援。建議開發人員和應用程式升級到較新版本的 Electron。

下一步

短期內,您可以預期團隊將繼續專注於跟上組成 Electron 的主要組件(包括 Chromium、Node 和 V8)的開發。雖然我們小心不對發布日期做出承諾,但我們的計劃是每季發布帶有這些組件新版本的新主要 Electron 版本。

有關即將推出的 Electron 版本中計畫的重大變更資訊,請參閱我們的計畫的重大變更