基於前一篇文章 視窗 API 大集合,這篇文章將繼續介紹更多 Electron 提供的視窗 API,讓開發者對 Electron 視窗管理 有更深入的理解。我們將涵蓋一些進階功能和較少提及的 API,幫助讀者實現更複雜的視窗控制和互動。
在 Electron 中,BrowserWindow
是管理視窗的核心類別。除了基本的視窗創建和操作外,Electron 還提供了很多進階的 API 來讓開發者更精細地控制視窗的行為和樣式。這篇文章將涵蓋更多視窗相關的 API,幫助你構建更強大的桌面應用。
setOpacity()
:設置視窗的不透明度setOpacity()
方法允許你設置視窗的透明度,這對於打造一些特效視窗(如通知、提示窗口)非常有用。
mainWindow.setOpacity(0.8); // 設置視窗不透明度為 80%
你可以設置 0 到 1 之間的浮點數,其中 1 是完全不透明,0 是完全透明。
setIgnoreMouseEvents()
:忽略滑鼠事件這個方法允許視窗忽略滑鼠事件,使滑鼠點擊穿透視窗。在開發透明視窗或桌面工具時非常實用。
mainWindow.setIgnoreMouseEvents(true); // 讓滑鼠點擊穿透視窗
你也可以傳入第二個參數 options
來設置點擊透明部分忽略,但不忽略可視內容的事件。
mainWindow.setIgnoreMouseEvents(true, { forward: true });
setContentProtection()
:啟用內容保護當你希望保護視窗中的內容不被截圖或錄製時,setContentProtection()
方法會很有幫助。啟用此功能後,操作系統將阻止對此視窗內容的截圖或錄影。
mainWindow.setContentProtection(true); // 禁止截圖
setKiosk()
:啟用或退出 kiosk 模式Kiosk 模式 是一種將應用鎖定在全螢幕且無法退出的模式。這在展示應用或公共終端機上很有用。
mainWindow.setKiosk(true); // 啟用 kiosk 模式
mainWindow.setKiosk(false); // 退出 kiosk 模式
你可以通過 isKiosk()
來檢查視窗是否處於 kiosk 模式。
const isKioskMode = mainWindow.isKiosk();
setProgressBar()
:設置視窗的進度條在某些桌面應用中,你可能需要顯示進度條來向用戶展示當前任務的進度,Electron 允許你設置視窗的進度條。
mainWindow.setProgressBar(0.5); // 設置視窗進度條為 50%
你可以設置一個 0 到 1 之間的數字來控制進度條的進度。設置 -1
會隱藏進度條。
flashFrame()
:閃爍視窗flashFrame()
讓視窗在操作系統的任務欄上閃爍,用於提醒用戶應用中有重要事件發生。這在聊天應用或通知類型的應用中特別有用。
mainWindow.flashFrame(true); // 開始閃爍
mainWindow.flashFrame(false); // 停止閃爍
setThumbarButtons()
:設置任務欄按鈕(Windows 特有)Thumbar 按鈕 是指在 Windows 任務欄中顯示的小按鈕,用來直接操控應用中的一些功能(例如音樂播放器中的播放/暫停按鈕)。
mainWindow.setThumbarButtons([
{
icon: path.join(__dirname, 'play.png'),
click: () => { console.log('播放'); },
tooltip: '播放'
},
{
icon: path.join(__dirname, 'pause.png'),
click: () => { console.log('暫停'); },
tooltip: '暫停'
}
]);
setOverlayIcon()
:設置視窗的任務欄圖標(Windows 特有)你可以在 Windows 任務欄的應用圖標上覆蓋一個小圖標,這通常用於提示應用狀態(例如訊息通知)。
mainWindow.setOverlayIcon(path.join(__dirname, 'overlay.png'), '新通知');
setFocusable()
:設置視窗是否可獲取焦點當你希望某個視窗不能被聚焦(例如背景工具窗口),可以使用 setFocusable()
方法來禁用該視窗的聚焦行為。
mainWindow.setFocusable(false); // 禁止獲取焦點
mainWindow.setFocusable(true); // 允許獲取焦點
setMovable()
/ setResizable()
:設置視窗是否可移動或調整大小你可以動態設置視窗是否可以移動或調整大小。這在某些應用場景中會比較實用,例如鎖定某些視窗以避免用戶誤操作。
mainWindow.setMovable(false); // 禁止移動
mainWindow.setResizable(false); // 禁止調整大小
相對的,還有 setMaximizable()
和 setMinimizable()
,用於控制視窗是否允許最大化或最小化。
mainWindow.setMaximizable(false); // 禁止最大化
mainWindow.setMinimizable(false); // 禁止最小化
setSkipTaskbar()
:跳過任務欄當你希望某些視窗不出現在任務欄上,可以使用 setSkipTaskbar()
方法。
mainWindow.setSkipTaskbar(true); // 隱藏任務欄圖標
setAutoHideMenuBar()
:自動隱藏選單欄在某些應用中,你可能希望選單欄默認是隱藏的,只有當用戶按下 Alt
鍵時才顯示出來,這可以通過 setAutoHideMenuBar()
來實現。
mainWindow.setAutoHideMenuBar(true); // 啟用自動隱藏
你也可以使用 setMenuBarVisibility()
來顯示或隱藏選單欄。
mainWindow.setMenuBarVisibility(false); // 隱藏選單欄
setVibrancy()
:設置視窗的背景模糊效果(macOS 特有)在 macOS 中,setVibrancy()
可以讓你的視窗背景顯示出模糊的視覺效果,這在某些 macOS 應用中非常流行。
mainWindow.setVibrancy('light'); // 設置輕量模糊背景
你可以使用不同的模糊模式,如 light
、dark
、ultra-dark
。
setShadow()
:設置視窗陰影(macOS 特有)在 macOS 中,你可以使用 setShadow()
來控制視窗的陰影效果。
mainWindow.setShadow(true); // 開啟陰影
mainWindow.setShadow(false); // 關閉陰影
setWindowButtonVisibility()
:設置 macOS 視窗控制按鈕可視性你可以使用 setWindowButtonVisibility()
來控制 macOS 視窗的關閉、最小化和最大化按鈕是否顯示。
mainWindow.setWindowButtonVisibility(false); // 隱藏按鈕
這篇文章介紹了更多進階的 Electron 視窗 API,這些 API 讓讀者可以更靈活地管理視窗的外觀、行為和互動。從設置不透明度、忽略滑鼠事件,到啟用內容保護、添加進度條、設置任務欄按鈕等,這些功能可以打造更加豐富和個性化的桌面程式。
透過掌握這些進階 API,你可以實現多樣化的功能,如通知功能、小工具等。
充分利用這些工具,能夠使 Electron 程式更具吸引力與實用性。