從 BrowserView 遷移至 WebContentsView
BrowserView
自 Electron 30 起已棄用,並由 WebContentView
取代。幸運的是,遷移過程相當輕鬆。
Electron 正從 BrowserView
轉移到 WebContentsView
,以與 Chromium 的 UI 框架 Views API 對齊。WebContentsView
提供一個直接與 Chromium 渲染管道綁定的可重複使用檢視,簡化了未來升級,並開啟了開發人員將非 Web UI 元素整合到其 Electron 應用程式的可能性。透過採用 WebContentsView
,應用程式不僅為即將到來的更新做好準備,還可以從長遠來看減少程式碼複雜性和潛在錯誤。
熟悉 BrowserWindows 和 BrowserViews 的開發人員應注意,BrowserWindow
和 WebContentsView
分別是繼承自 BaseWindow
和 View
基底類別的子類別。若要完全了解可用的實例變數和方法,請務必查閱這些基底類別的文件。
遷移步驟
1. 將 Electron 升級至 30.0.0 或更高版本
Electron 版本可能包含會影響您的應用程式的重大變更。最好在繼續進行此遷移的其餘步驟之前,先在您的應用程式上測試並完成 Electron 升級。可以在此處以及 Electron 部落格上每個主要版本的發布說明中找到每個 Electron 主要版本的重大變更清單。
2. 熟悉您的應用程式使用 BrowserViews 的位置
執行此操作的一種方法是在您的程式碼庫中搜尋 new BrowserView(
。這應該讓您了解您的應用程式如何使用 BrowserViews 以及需要遷移的呼叫位置數量。
在大多數情況下,您的應用程式實例化新 BrowserViews 的每個實例都可以與其他實例隔離進行遷移。
3. 遷移 BrowserView
的每個用法
-
遷移實例化。這應該相當簡單,因為 WebContentsView 和 BrowserView 的建構函式基本上具有相同的形狀。兩者都透過
webPreferences
參數接受 WebPreferences。- this.tabBar = new BrowserView({
+ this.tabBar = new WebContentsView({資訊依預設,
WebContentsView
以白色背景實例化,而BrowserView
以透明背景實例化。若要在WebContentsView
中取得透明背景,請將其背景顏色設定為 RGBA 十六進位值,並將 alpha(不透明度)通道設定為00
+ this.webContentsView.setBackgroundColor("#00000000");
-
遷移
BrowserView
新增至其父視窗的位置。- this.browserWindow.addBrowserView(this.tabBar)
+ this.browserWindow.contentView.addChildView(this.tabBar); -
遷移父視窗上的
BrowserView
實例方法呼叫。舊方法 新方法 注意事項 win.setBrowserView
win.contentView.removeChildView
+win.contentView.addChildView
win.getBrowserView
win.contentView.children
win.removeBrowserView
win.contentView.removeChildView
win.setTopBrowserView
win.contentView.addChildView
在現有檢視上呼叫 addChildView
會將其重新排序到頂端。win.getBrowserViews
win.contentView.children
-
將
setAutoResize
實例方法遷移至調整大小接聽程式。- this.browserView.setAutoResize({
- vertical: true,
- })
+ this.browserWindow.on('resize', () => {
+ if (!this.browserWindow || !this.webContentsView) {
+ return;
+ }
+ const bounds = this.browserWindow.getBounds();
+ this.webContentsView.setBounds({
+ x: 0,
+ y: 0,
+ width: bounds.width,
+ height: bounds.height,
+ });
+ });提示browserView.webContents
的所有現有用法和實例方法browserView.setBounds
、browserView.getBounds
和browserView.setBackgroundColor
都不需要遷移,並且應該可以與WebContentsView
實例開箱即用!
4. 測試並提交您的變更
遇到問題?請檢查 Electron 問題追蹤器上的 WebContentsView 標籤,查看您遇到的問題是否已回報。如果您在那裡沒有看到您的問題,請隨時新增錯誤報告。包含測試案例 gist 將有助於我們更好地分類您的問題!
恭喜,您已遷移至 WebContentsViews!🎉