跳到主要內容

BaseWindow

建立和控制視窗。

程序: 主程序

注意 BaseWindow 提供了一種彈性的方式,可以在單一視窗中組合多個網頁檢視。對於只有單一全尺寸網頁檢視的視窗,BrowserWindow 類別可能是更簡單的選擇。

此模組在 app 模組的 ready 事件發射之前無法使用。

// In the main process.
const { BaseWindow, WebContentsView } = require('electron')

const win = new BaseWindow({ width: 800, height: 600 })

const leftView = new WebContentsView()
leftView.webContents.loadURL('https://electron.dev.org.tw')
win.contentView.addChildView(leftView)

const rightView = new WebContentsView()
rightView.webContents.loadURL('https://github.com/electron/electron')
win.contentView.addChildView(rightView)

leftView.setBounds({ x: 0, y: 0, width: 400, height: 600 })
rightView.setBounds({ x: 400, y: 0, width: 400, height: 600 })

父視窗和子視窗

透過使用 parent 選項,您可以建立子視窗

const { BaseWindow } = require('electron')

const parent = new BaseWindow()
const child = new BaseWindow({ parent })

child 視窗將始終顯示在 parent 視窗之上。

強制回應視窗是一種會停用父視窗的子視窗。若要建立強制回應視窗,您必須同時設定 parentmodal 選項

const { BaseWindow } = require('electron')

const parent = new BaseWindow()
const child = new BaseWindow({ parent, modal: true })

平台注意事項

  • 在 macOS 上,強制回應視窗將顯示為附加到父視窗的工作表。
  • 在 macOS 上,當父視窗移動時,子視窗將保持與父視窗的相對位置,而在 Windows 和 Linux 上,子視窗不會移動。
  • 在 Linux 上,強制回應視窗的類型將變更為 dialog
  • 在 Linux 上,許多桌面環境不支援隱藏強制回應視窗。

資源管理

當您將 WebContentsView 新增至 BaseWindowBaseWindow 關閉時,WebContentsViewwebContents 不會自動銷毀。

當您不再需要 webContents 時,您有責任關閉它們,例如當 BaseWindow 關閉時

const { BaseWindow, WebContentsView } = require('electron')

const win = new BaseWindow({ width: 800, height: 600 })

const view = new WebContentsView()
win.contentView.addChildView(view)

win.on('closed', () => {
view.webContents.close()
})

BrowserWindow 不同,如果您未明確關閉 webContents,則會遇到記憶體洩漏。

類別: BaseWindow

建立和控制視窗。

程序: 主程序

BaseWindow 是一個 EventEmitter

它會使用 options 設定的原生屬性建立新的 BaseWindow

new BaseWindow([options])

  • options BaseWindowConstructorOptions (選填)
    • width 整數 (選填) - 視窗的寬度,以像素為單位。預設值為 800
    • height 整數 (選填) - 視窗的高度,以像素為單位。預設值為 600
    • x 整數 (選填) - (必填,如果使用了 y) 視窗與螢幕左邊界的偏移量。預設值為將視窗置中。
    • y 整數 (選填) - (必填,如果使用了 x) 視窗與螢幕上邊界的偏移量。預設值為將視窗置中。
    • useContentSize 布林值 (選填) - widthheight 將用作網頁的大小,這表示實際的視窗大小將包含視窗框架的大小,並且會稍微大一些。預設值為 false
    • center 布林值 (選填) - 在螢幕中心顯示視窗。預設值為 false
    • minWidth 整數 (選填) - 視窗的最小寬度。預設值為 0
    • minHeight 整數 (選填) - 視窗的最小高度。預設值為 0
    • maxWidth 整數 (選填) - 視窗的最大寬度。預設值為無限制。
    • maxHeight 整數 (選填) - 視窗的最大高度。預設值為無限制。
    • resizable 布林值 (選填) - 視窗是否可調整大小。預設值為 true
    • movable 布林值 (選填) macOS Windows - 視窗是否可移動。這在 Linux 上未實作。預設值為 true
    • minimizable 布林值 (選填) macOS Windows - 視窗是否可最小化。這在 Linux 上未實作。預設值為 true
    • maximizable 布林值 (選填) macOS Windows - 視窗是否可最大化。這在 Linux 上未實作。預設值為 true
    • closable 布林值 (選填) macOS Windows - 視窗是否可關閉。這在 Linux 上未實作。預設值為 true
    • focusable 布林值 (選填) - 視窗是否可以取得焦點。預設值為 true。在 Windows 上,設定 focusable: false 也表示設定 skipTaskbar: true。在 Linux 上,設定 focusable: false 會使視窗停止與視窗管理員互動,因此視窗將始終在所有工作區中保持在最上層。
    • alwaysOnTop 布林值 (選填) - 視窗是否應始終保持在其他視窗之上。預設值為 false
    • fullscreen 布林值 (選填) - 視窗是否應以全螢幕顯示。當明確設定為 false 時,全螢幕按鈕將在 macOS 上隱藏或停用。預設值為 false
    • fullscreenable 布林值 (選填) - 視窗是否可以進入全螢幕模式。在 macOS 上,也決定了最大化/縮放按鈕應切換全螢幕模式還是最大化視窗。預設值為 true
    • simpleFullscreen 布林值 (選填) macOS - 在 macOS 上使用 Lion 之前的全螢幕模式。預設值為 false
    • skipTaskbar 布林值 (選填) macOS Windows - 是否在工作列中顯示視窗。預設值為 false
    • hiddenInMissionControl 布林值 (選填) macOS - 當使用者切換到 Mission Control 時,是否應隱藏視窗。
    • kiosk 布林值 (選填) - 視窗是否處於 Kiosk 模式。預設值為 false
    • title 字串 (選填) - 預設視窗標題。預設值為 "Electron"。如果在 loadURL() 載入的 HTML 檔案中定義了 HTML 標籤 <title>,則此屬性將被忽略。
    • icon (NativeImage | 字串) (選填) - 視窗圖示。在 Windows 上,建議使用 ICO 圖示以獲得最佳視覺效果,您也可以將其保留為未定義,以便使用可執行檔的圖示。
    • show 布林值 (選填) - 視窗在建立時是否應顯示。預設值為 true
    • frame 布林值 (選填) - 指定 false 以建立 無框架視窗。預設值為 true
    • parent BaseWindow (選填) - 指定父視窗。預設值為 null
    • modal 布林值 (選填) - 這是否為強制回應視窗。這僅在視窗是子視窗時才有效。預設值為 false
    • acceptFirstMouse 布林值 (選填) macOS - 按一下非作用中視窗是否也會點擊到網頁內容。在 macOS 上,預設值為 false。此選項在其他平台上不可設定。
    • disableAutoHideCursor 布林值 (選填) - 輸入時是否隱藏游標。預設值為 false
    • autoHideMenuBar 布林值 (選填) - 自動隱藏選單列,除非按下 Alt 鍵。預設值為 false
    • enableLargerThanScreen 布林值 (選填) macOS - 啟用視窗調整大小超過螢幕。僅與 macOS 相關,因為其他作業系統預設允許大於螢幕的視窗。預設值為 false
    • backgroundColor 字串 (選填) - 視窗的背景顏色,格式可以是 Hex、RGB、RGBA、HSL、HSLA 或具名的 CSS 顏色格式。如果 transparent 設定為 true,則支援 #AARRGGBB 格式的 Alpha 值。預設值為 #FFF (白色)。請參閱 win.setBackgroundColor 以取得更多資訊。
    • hasShadow 布林值 (選填) - 視窗是否應有陰影。預設值為 true
    • opacity 數字 (選填) macOS Windows - 設定視窗的初始不透明度,介於 0.0 (完全透明) 和 1.0 (完全不透明) 之間。這僅在 Windows 和 macOS 上實作。
    • darkTheme 布林值 (選填) - 強制視窗使用深色主題,僅在某些 GTK+3 桌面環境中有效。預設值為 false
    • transparent 布林值 (選填) - 使視窗 透明。預設值為 false。在 Windows 上,除非視窗是無框架的,否則無效。
    • type 字串 (選填) - 視窗的類型,預設值為一般視窗。請參閱下文以了解更多資訊。
    • visualEffectState 字串 (選填) macOS - 指定材質外觀應如何反映 macOS 上的視窗活動狀態。必須與 vibrancy 屬性一起使用。可能的值為
      • followWindow - 背景幕應在視窗作用中時自動顯示為作用中,而在非作用中時顯示為非作用中。這是預設值。
      • active - 背景幕應始終顯示為作用中。
      • inactive - 背景幕應始終顯示為非作用中。
    • titleBarStyle 字串 (選填) - 視窗標題列的樣式。預設值為 default。可能的值為
      • default - 分別產生 macOS 或 Windows 的標準標題列。
      • hidden - 產生隱藏的標題列和全尺寸內容視窗。在 macOS 上,視窗在左上方仍然具有標準視窗控制項 («交通號誌»)。在 Windows 和 Linux 上,當與 titleBarOverlay: true 結合使用時,它將啟用視窗控制項疊加層 (請參閱 titleBarOverlay 以取得更多資訊),否則不會顯示視窗控制項。
      • hiddenInset macOS - 產生具有替代外觀的隱藏標題列,其中交通號誌按鈕從視窗邊緣稍微內嵌。
      • customButtonsOnHover macOS - 產生隱藏的標題列和全尺寸內容視窗,交通號誌按鈕將在滑鼠懸停在視窗左上方時顯示。注意:此選項目前為實驗性。
    • titleBarOverlay 物件 | 布林值 (選填) - 在 macOS 上使用無框架視窗並結合 win.setWindowButtonVisibility(true) 或使用 titleBarStyle 以使標準視窗控制項 («交通號誌» 在 macOS 上) 可見時,此屬性會啟用視窗控制項疊加層 JavaScript APICSS 環境變數。指定 true 將產生具有預設系統顏色的疊加層。預設值為 false
      • color 字串 (選填) Windows Linux - 啟用時,視窗控制項疊加層的 CSS 顏色。預設值為系統顏色。
      • symbolColor 字串 (選填) Windows - 啟用時,視窗控制項疊加層上符號的 CSS 顏色。預設值為系統顏色。
      • height 整數 (選填) - 標題列和視窗控制項疊加層的高度,以像素為單位。預設值為系統高度。
    • trafficLightPosition Point (選填) macOS - 在無框架視窗中,設定交通號誌按鈕的自訂位置。
    • roundedCorners 布林值 (選填) macOS Windows - 無框架視窗是否應具有圓角。預設值為 true。將此屬性設定為 false 將阻止視窗在 macOS 上全螢幕化。在 Windows 11 Build 22000 之前的 Windows 版本上,此屬性無效,且無框架視窗將不具有圓角。
    • thickFrame 布林值 (選填) - 在 Windows 上,針對無框架視窗使用 WS_THICKFRAME 樣式,這會新增標準視窗框架。將其設定為 false 將移除視窗陰影和視窗動畫。預設值為 true
    • vibrancy 字串 (選填) macOS - 為視窗新增一種生動效果,僅在 macOS 上有效。可以是 appearance-basedtitlebarselectionmenupopoversidebarheadersheetwindowhudfullscreen-uitooltipcontentunder-windowunder-page
    • backgroundMaterial 字串 (選填) Windows - 設定視窗的系統繪製背景材質,包括非用戶端區域後方。可以是 autononemicaacrylictabbed。請參閱 win.setBackgroundMaterial 以取得更多資訊。
    • zoomToPageWidth 布林值 (選填) macOS - 控制在 macOS 上,當在工具列上按住 Option 鍵並點擊綠色停止號誌按鈕,或點擊「視窗」>「縮放」選單項目時的行為。如果為 true,則視窗在縮放時將擴展到網頁的慣用寬度,false 將使其縮放到螢幕的寬度。這也會影響直接呼叫 maximize() 時的行為。預設值為 false
    • tabbingIdentifier 字串 (選填) macOS - 索引標籤群組名稱,允許將視窗作為原生索引標籤開啟。具有相同索引標籤識別碼的視窗將分組在一起。這也會在視窗的索引標籤列中新增原生新增索引標籤按鈕,並允許您的 app 和視窗接收 new-window-for-tab 事件。

    當使用 minWidth/maxWidth/ minHeight/maxHeight 設定最小或最大視窗大小時,它僅限制使用者。它不會阻止您將不符合大小限制的大小傳遞給 setBounds/setSizeBrowserWindow 的建構函式。

    type 選項的可能值和行為取決於平台。可能的值為

    • 在 Linux 上,可能的類型為 desktopdocktoolbarsplashnotification
      • desktop 類型將視窗放置在桌面背景視窗層級 (kCGDesktopWindowLevel - 1)。但是,請注意,桌面視窗不會接收焦點、鍵盤或滑鼠事件。您仍然可以使用 globalShortcut 來少量接收輸入。
      • dock 類型會建立類似 Dock 的視窗行為。
      • toolbar 類型會建立具有工具列外觀的視窗。
      • splash 類型的行為方式很特殊。即使視窗主體的 CSS 樣式包含 -webkit-app-region: drag,它也是不可拖曳的。此類型通常用於啟動畫面。
      • notification 類型會建立一個行為類似系統通知的視窗。
    • 在 macOS 上,可能的類型為 desktoptexturedpanel
      • textured 類型新增金屬漸層外觀。此選項已棄用
      • desktop 類型將視窗放置在桌面背景視窗層級 (kCGDesktopWindowLevel - 1)。請注意,桌面視窗不會接收焦點、鍵盤或滑鼠事件,但您可以使用 globalShortcut 來少量接收輸入。
      • panel 類型透過在執行階段新增 NSWindowStyleMaskNonactivatingPanel 樣式遮罩 (通常為 NSPanel 保留),使視窗能夠浮動在全螢幕應用程式之上。此外,視窗將出現在所有空間 (桌面) 上。
    • 在 Windows 上,可能的類型為 toolbar

實例事件

使用 new BaseWindow 建立的物件會發射下列事件

注意: 某些事件僅在特定作業系統上可用,並已標記。

事件: 'close'

傳回

  • event 事件

當視窗即將關閉時發射。它在 DOM 的 beforeunloadunload 事件之前發射。呼叫 event.preventDefault() 將取消關閉。

通常您會想要使用 beforeunload 處理常式來決定是否應關閉視窗,這也會在重新載入視窗時呼叫。在 Electron 中,傳回任何非 undefined 的值都會取消關閉。例如

window.onbeforeunload = (e) => {
console.log('I do not want to be closed')

// Unlike usual browsers that a message box will be prompted to users, returning
// a non-void value will silently cancel the close.
// It is recommended to use the dialog API to let the user confirm closing the
// application.
e.returnValue = false
}

注意window.onbeforeunload = handlerwindow.addEventListener('beforeunload', handler) 的行為之間存在細微差異。建議始終明確設定 event.returnValue,而不是僅傳回值,因為前者在 Electron 中更一致地運作。

事件: 'closed'

當視窗關閉時發射。收到此事件後,您應移除對視窗的參考,並避免再使用它。

事件: 'query-session-end' Windows

傳回

當工作階段即將因關機、機器重新啟動或使用者登出而結束時發射。呼叫 event.preventDefault() 可以延遲系統關機,但通常最好尊重使用者結束工作階段的選擇。但是,如果結束工作階段會使使用者面臨資料遺失的風險,您可以選擇使用它。

事件: 'session-end' Windows

傳回

當工作階段即將因關機、機器重新啟動或使用者登出而結束時發射。一旦發射此事件,就無法阻止工作階段結束。

事件: 'blur'

傳回

  • event 事件

當視窗失去焦點時發射。

事件: 'focus'

傳回

  • event 事件

當視窗取得焦點時發射。

事件: 'show'

當視窗顯示時發射。

事件: 'hide'

當視窗隱藏時發射。

事件: 'maximize'

當視窗最大化時發射。

事件: 'unmaximize'

當視窗從最大化狀態退出時發射。

事件: 'minimize'

當視窗最小化時發射。

事件: 'restore'

當視窗從最小化狀態還原時發射。

事件: 'will-resize' macOS Windows

傳回

  • event 事件
  • newBounds Rectangle - 視窗正在調整大小至的大小。
  • details 物件
    • edge (字串) - 正在拖曳以調整大小的視窗邊緣。可以是 bottomleftrighttop-lefttop-rightbottom-leftbottom-right

在視窗調整大小之前發射。呼叫 event.preventDefault() 將阻止視窗調整大小。

請注意,這僅在手動調整視窗大小時發射。使用 setBounds/setSize 調整視窗大小將不會發射此事件。

edge 選項的可能值和行為取決於平台。可能的值為

  • 在 Windows 上,可能的值為 bottomtopleftrighttop-lefttop-rightbottom-leftbottom-right
  • 在 macOS 上,可能的值為 bottomright
    • bottom 用於表示垂直調整大小。
    • right 用於表示水平調整大小。

事件: 'resize'

在視窗調整大小後發射。

事件: 'resized' macOS Windows

當視窗完成調整大小時發射一次。

這通常在手動調整視窗大小時發射。在 macOS 上,使用 setBounds/setSize 調整視窗大小並將 animate 參數設定為 true 也會在調整大小完成後發射此事件。

事件: 'will-move' macOS Windows

傳回

  • event 事件
  • newBounds Rectangle - 視窗正在移動到的位置。

在視窗移動之前發射。在 Windows 上,呼叫 event.preventDefault() 將阻止視窗移動。

請注意,這僅在手動移動視窗時發射。使用 setPosition/setBounds/center 移動視窗將不會發射此事件。

事件: 'move'

當視窗正在移動到新位置時發射。

事件: 'moved' macOS Windows

當視窗移動到新位置時發射一次。

注意:在 macOS 上,此事件是 move 的別名。

事件: 'enter-full-screen'

當視窗進入全螢幕狀態時發射。

事件: 'leave-full-screen'

當視窗離開全螢幕狀態時發射。

事件: 'always-on-top-changed'

傳回

  • event 事件
  • isAlwaysOnTop 布林值

當視窗設定或取消設定為始終顯示在其他視窗之上時發射。

事件: 'app-command' Windows Linux

傳回

  • event 事件
  • command 字串

當呼叫 應用程式命令 時發射。這些通常與鍵盤媒體鍵或瀏覽器命令,以及 Windows 上某些滑鼠內建的 «上一頁» 按鈕相關。

命令為小寫,底線替換為連字號,且已移除 APPCOMMAND_ 前綴。例如,APPCOMMAND_BROWSER_BACKWARD 發射為 browser-backward

const { BaseWindow } = require('electron')
const win = new BaseWindow()
win.on('app-command', (e, cmd) => {
// Navigate the window back when the user hits their mouse back button
if (cmd === 'browser-backward') {
// Find the appropriate WebContents to navigate.
}
})

下列應用程式命令在 Linux 上明確支援

  • browser-backward
  • browser-forward

事件: 'swipe' macOS

傳回

  • event 事件
  • direction 字串

在三指滑動時發射。可能的方向為 uprightdownleft

此事件的基礎方法旨在處理舊版 macOS 風格的觸控式軌跡板滑動,其中螢幕上的內容不會隨著滑動而移動。大多數 macOS 觸控式軌跡板不再設定為允許這種滑動,因此為了使其正確發射,系統偏好設定 > 觸控式軌跡板 > 更多手勢 中的 «在頁面之間滑動» 偏好設定必須設定為 «用兩指或三指滑動»。

事件: 'rotate-gesture' macOS

傳回

  • event 事件
  • rotation 浮點數

在觸控式軌跡板旋轉手勢時發射。持續發射直到旋轉手勢結束。每次發射時的 rotation 值是自上次發射以來旋轉的角度 (以度為單位)。旋轉手勢的最後一個發射事件的值始終為 0。逆時針旋轉值為正數,而順時針旋轉值為負數。

事件: 'sheet-begin' macOS

當視窗開啟工作表時發射。

事件: 'sheet-end' macOS

當視窗關閉工作表時發射。

事件: 'new-window-for-tab' macOS

當原生新的分頁按鈕被點擊時發出。

事件:'system-context-menu' Windows

傳回

  • event 事件
  • point Point - 觸發上下文選單的螢幕座標

當在視窗上觸發系統上下文選單時發出,這通常只在使用者在視窗的非客戶區點擊滑鼠右鍵時觸發。這是視窗的標題列,或是您在無邊框視窗中宣告為 -webkit-app-region: drag 的任何區域。

呼叫 event.preventDefault() 將阻止選單顯示。

靜態方法

BaseWindow 類別具有以下靜態方法

BaseWindow.getAllWindows()

回傳 BaseWindow[] - 所有已開啟的瀏覽器視窗的陣列。

BaseWindow.getFocusedWindow()

回傳 BaseWindow | null - 此應用程式中獲得焦點的視窗,否則回傳 null

BaseWindow.fromId(id)

  • id 整數

回傳 BaseWindow | null - 具有給定 id 的視窗。

實例屬性

使用 new BaseWindow 建立的物件具有以下屬性

const { BaseWindow } = require('electron')
// In this example `win` is our instance
const win = new BaseWindow({ width: 800, height: 600 })

win.id 唯讀

一個 Integer 屬性,表示視窗的唯一 ID。每個 ID 在整個 Electron 應用程式的所有 BaseWindow 實例中都是唯一的。

win.contentView

視窗內容視圖的 View 屬性。

win.tabbingIdentifier macOS 唯讀

一個 string (可選) 屬性,等於傳遞給 BrowserWindow 建構函式的 tabbingIdentifier,如果沒有設定則為 undefined

win.autoHideMenuBar

一個 boolean 屬性,決定視窗選單列是否應自動隱藏自身。一旦設定,選單列只會在使用者按下單個 Alt 鍵時顯示。

如果選單列已可見,則將此屬性設定為 true 不會立即隱藏它。

win.simpleFullScreen

一個 boolean 屬性,決定視窗是否處於簡單(pre-Lion)全螢幕模式。

win.fullScreen

一個 boolean 屬性,決定視窗是否處於全螢幕模式。

win.focusable Windows macOS

一個 boolean 屬性,決定視窗是否可獲得焦點。

win.visibleOnAllWorkspaces macOS Linux

一個 boolean 屬性,決定視窗是否在所有工作區上都可見。

注意: 在 Windows 上始終回傳 false。

win.shadow

一個 boolean 屬性,決定視窗是否具有陰影。

win.menuBarVisible Windows Linux

一個 boolean 屬性,決定選單列是否應可見。

注意: 如果選單列設定為自動隱藏,使用者仍然可以透過按下單個 Alt 鍵來顯示選單列。

win.kiosk

一個 boolean 屬性,決定視窗是否處於資訊站模式。

win.documentEdited macOS

一個 boolean 屬性,指定視窗的文件是否已被編輯。

當設定為 true 時,標題列中的圖示將變為灰色。

win.representedFilename macOS

一個 string 屬性,決定視窗所代表的檔案路徑名稱,且檔案的圖示將顯示在視窗的標題列中。

win.title

一個 string 屬性,決定原生視窗的標題。

注意: 網頁的標題可能與原生視窗的標題不同。

win.minimizable macOS Windows

一個 boolean 屬性,決定視窗是否可以由使用者手動最小化。

在 Linux 上,setter 是一個空操作,儘管 getter 回傳 true

win.maximizable macOS Windows

一個 boolean 屬性,決定視窗是否可以由使用者手動最大化。

在 Linux 上,setter 是一個空操作,儘管 getter 回傳 true

win.fullScreenable

一個 boolean 屬性,決定最大化/縮放視窗按鈕是切換全螢幕模式還是最大化視窗。

win.resizable

一個 boolean 屬性,決定視窗是否可以由使用者手動調整大小。

win.closable macOS Windows

一個 boolean 屬性,決定視窗是否可以由使用者手動關閉。

在 Linux 上,setter 是一個空操作,儘管 getter 回傳 true

win.movable macOS Windows

一個 boolean 屬性,決定視窗是否可以由使用者移動。

在 Linux 上,setter 是一個空操作,儘管 getter 回傳 true

win.excludedFromShownWindowsMenu macOS

一個 boolean 屬性,決定視窗是否從應用程式的「視窗」選單中排除。預設為 false

const { Menu, BaseWindow } = require('electron')
const win = new BaseWindow({ height: 600, width: 600 })

const template = [
{
role: 'windowmenu'
}
]

win.excludedFromShownWindowsMenu = true

const menu = Menu.buildFromTemplate(template)
Menu.setApplicationMenu(menu)

win.accessibleTitle

一個 string 屬性,定義僅提供給螢幕閱讀器等輔助工具的替代標題。此字串不會直接向使用者顯示。

實例方法

使用 new BaseWindow 建立的物件具有以下實例方法

注意: 某些方法僅在特定的作業系統上可用,並已標記。

win.setContentView(view)

設定視窗的內容視圖。

win.getContentView()

回傳 View - 視窗的內容視圖。

win.destroy()

強制關閉視窗,網頁將不會發出 unloadbeforeunload 事件,且此視窗也不會發出 close 事件,但它保證會發出 closed 事件。

win.close()

嘗試關閉視窗。這與使用者手動點擊視窗的關閉按鈕具有相同的效果。但網頁可能會取消關閉。請參閱 close 事件

win.focus()

將焦點放在視窗上。

win.blur()

從視窗移除焦點。

win.isFocused()

回傳 boolean - 視窗是否獲得焦點。

win.isDestroyed()

回傳 boolean - 視窗是否已被銷毀。

win.show()

顯示視窗並將焦點給予視窗。

win.showInactive()

顯示視窗但不將焦點放在其上。

win.hide()

隱藏視窗。

win.isVisible()

回傳 boolean - 視窗在應用程式的前景中對使用者是否可見。

win.isModal()

回傳 boolean - 目前視窗是否為強制回應視窗。

win.maximize()

最大化視窗。如果視窗尚未顯示,這也會顯示(但不給予焦點)視窗。

win.unmaximize()

取消最大化視窗。

win.isMaximized()

回傳 boolean - 視窗是否已最大化。

win.minimize()

最小化視窗。在某些平台上,最小化的視窗將顯示在 Dock 中。

win.restore()

將視窗從最小化狀態還原到先前的狀態。

win.isMinimized()

回傳 boolean - 視窗是否已最小化。

win.setFullScreen(flag)

  • flag boolean

設定視窗是否應處於全螢幕模式。

注意: 在 macOS 上,全螢幕轉換是異步進行的。如果後續動作取決於全螢幕狀態,請使用 'enter-full-screen''leave-full-screen' 事件。

win.isFullScreen()

回傳 boolean - 視窗是否處於全螢幕模式。

win.setSimpleFullScreen(flag) macOS

  • flag boolean

進入或離開簡單全螢幕模式。

簡單全螢幕模式模擬 macOS Lion (10.7) 之前的版本中找到的原生全螢幕行為。

win.isSimpleFullScreen() macOS

回傳 boolean - 視窗是否處於簡單(pre-Lion)全螢幕模式。

win.isNormal()

回傳 boolean - 視窗是否處於正常狀態(未最大化、未最小化、未處於全螢幕模式)。

win.setAspectRatio(aspectRatio[, extraSize])

  • aspectRatio Float - 要為內容視圖的某部分維持的長寬比。
  • extraSize Size (可選) macOS - 在維持長寬比時不包含的額外大小。

這將使視窗維持長寬比。額外大小允許開發人員擁有以像素指定的空間,不包含在長寬比計算中。此 API 已經考慮到視窗大小與其內容大小之間的差異。

考慮一個具有 HD 視訊播放器和相關控制項的普通視窗。可能在左邊緣有 15 像素的控制項,在右邊緣有 25 像素的控制項,在播放器下方有 50 像素的控制項。為了在播放器本身內維持 16:9 的長寬比(HD @1920x1080 的標準長寬比),我們將使用 16/9 和 { width: 40, height: 50 } 的參數呼叫此函式。第二個參數不關心額外的寬度和高度在內容視圖中的位置 - 僅關心它們存在。將您在整體內容視圖中擁有的任何額外寬度和高度區域加總。

當使用 win.setSize 等 API 以程式方式調整視窗大小時,長寬比將不會被遵守。

若要重置長寬比,請將 0 作為 aspectRatio 值傳遞:win.setAspectRatio(0)

win.setBackgroundColor(backgroundColor)

  • backgroundColor string - 以 Hex、RGB、RGBA、HSL、HSLA 或具名 CSS 顏色格式表示的顏色。對於 hex 類型,alpha 通道是可選的。

有效的 backgroundColor 值範例

  • Hex
    • #fff (簡寫 RGB)
    • #ffff (簡寫 ARGB)
    • #ffffff (RGB)
    • #ffffffff (ARGB)
  • RGB
    • rgb\(([\d]+),\s*([\d]+),\s*([\d]+)\)
      • 例如 rgb(255, 255, 255)
  • RGBA
    • rgba\(([\d]+),\s*([\d]+),\s*([\d]+),\s*([\d.]+)\)
      • 例如 rgba(255, 255, 255, 1.0)
  • HSL
    • hsl\((-?[\d.]+),\s*([\d.]+)%,\s*([\d.]+)%\)
      • 例如 hsl(200, 20%, 50%)
  • HSLA
    • hsla\((-?[\d.]+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+)\)
      • 例如 hsla(200, 20%, 50%, 0.5)
  • 顏色名稱
    • 選項列在 SkParseColor.cpp
    • 類似於 CSS Color Module Level 3 關鍵字,但區分大小寫。
      • 例如 bluevioletred

設定視窗的背景顏色。請參閱 設定 backgroundColor

win.previewFile(path[, displayName]) macOS

  • path string - 要使用 QuickLook 預覽的檔案絕對路徑。這很重要,因為 Quick Look 使用路徑上的檔案名稱和副檔名來決定要開啟的檔案內容類型。
  • displayName string (可選) - 要在 Quick Look 模態視圖上顯示的檔案名稱。這純粹是視覺上的,不會影響檔案的內容類型。預設為 path

使用 Quick Look 預覽給定路徑的檔案。

win.closeFilePreview() macOS

關閉目前開啟的 Quick Look 面板。

win.setBounds(bounds[, animate])

  • bounds Partial<Rectangle>
  • animate boolean (可選) macOS

調整視窗大小並將其移動到提供的邊界。任何未提供的屬性都將預設為其目前的值。

const { BaseWindow } = require('electron')
const win = new BaseWindow()

// set all bounds properties
win.setBounds({ x: 440, y: 225, width: 800, height: 600 })

// set a single bounds property
win.setBounds({ width: 100 })

// { x: 440, y: 225, width: 100, height: 600 }
console.log(win.getBounds())

注意: 在 macOS 上,y 座標值不能小於 Tray 高度。Tray 高度會隨著時間而改變,並且取決於作業系統,但在 20-40px 之間。傳遞低於 Tray 高度的值將導致視窗與 Tray 齊平。

win.getBounds()

回傳 Rectangle - 視窗的 bounds 作為 Object

注意: 在 macOS 上,回傳的 y 座標值至少為 Tray 高度。例如,使用 Tray 高度為 38 呼叫 win.setBounds({ x: 25, y: 20, width: 800, height: 600 }) 表示 win.getBounds() 將回傳 { x: 25, y: 38, width: 800, height: 600 }

win.getBackgroundColor()

回傳 string - 以 Hex (#RRGGBB) 格式取得視窗的背景顏色。

請參閱 設定 backgroundColor

注意: alpha 值不會與紅色、綠色和藍色值一起回傳。

win.setContentBounds(bounds[, animate])

  • bounds Rectangle
  • animate boolean (可選) macOS

調整視窗的客戶區(例如網頁)大小並將其移動到提供的邊界。

win.getContentBounds()

回傳 Rectangle - 視窗客戶區的 bounds 作為 Object

win.getNormalBounds()

回傳 Rectangle - 包含正常狀態的視窗邊界

注意: 無論視窗的目前狀態為何:最大化、最小化或全螢幕,此函式始終回傳正常狀態下視窗的位置和大小。在正常狀態下,getBounds 和 getNormalBounds 回傳相同的 Rectangle

win.setEnabled(enable)

  • enable boolean

停用或啟用視窗。

win.isEnabled()

回傳 boolean - 視窗是否已啟用。

win.setSize(width, height[, animate])

  • width 整數
  • height 整數
  • animate boolean (可選) macOS

將視窗調整大小為 widthheight。如果 widthheight 低於任何設定的最小大小限制,視窗將會貼齊其最小大小。

win.getSize()

回傳 Integer[] - 包含視窗的寬度和高度。

win.setContentSize(width, height[, animate])

  • width 整數
  • height 整數
  • animate boolean (可選) macOS

將視窗的客戶區(例如網頁)調整大小為 widthheight

win.getContentSize()

回傳 Integer[] - 包含視窗客戶區的寬度和高度。

win.setMinimumSize(width, height)

  • width 整數
  • height 整數

設定視窗的最小大小為 widthheight

win.getMinimumSize()

回傳 Integer[] - 包含視窗的最小寬度和高度。

win.setMaximumSize(width, height)

  • width 整數
  • height 整數

設定視窗的最大大小為 widthheight

win.getMaximumSize()

回傳 Integer[] - 包含視窗的最大寬度和高度。

win.setResizable(resizable)

  • resizable boolean

設定視窗是否可以由使用者手動調整大小。

win.isResizable()

回傳 boolean - 視窗是否可以由使用者手動調整大小。

win.setMovable(movable) macOS Windows

  • movable boolean

設定視窗是否可以由使用者移動。在 Linux 上無作用。

win.isMovable() macOS Windows

回傳 boolean - 視窗是否可以由使用者移動。

在 Linux 上始終回傳 true

win.setMinimizable(minimizable) macOS Windows

  • minimizable boolean

設定視窗是否可以由使用者手動最小化。在 Linux 上無作用。

win.isMinimizable() macOS Windows

回傳 boolean - 視窗是否可以由使用者手動最小化。

在 Linux 上始終回傳 true

win.setMaximizable(maximizable) macOS Windows

  • maximizable boolean

設定視窗是否可以由使用者手動最大化。在 Linux 上無作用。

win.isMaximizable() macOS Windows

回傳 boolean - 視窗是否可以由使用者手動最大化。

在 Linux 上始終回傳 true

win.setFullScreenable(fullscreenable)

  • fullscreenable boolean

設定最大化/縮放視窗按鈕是切換全螢幕模式還是最大化視窗。

win.isFullScreenable()

回傳 boolean - 最大化/縮放視窗按鈕是切換全螢幕模式還是最大化視窗。

win.setClosable(closable) macOS Windows

  • closable boolean

設定視窗是否可以由使用者手動關閉。在 Linux 上無作用。

win.isClosable() macOS Windows

回傳 boolean - 視窗是否可以由使用者手動關閉。

在 Linux 上始終回傳 true

win.setHiddenInMissionControl(hidden) macOS

  • hidden boolean

設定當使用者切換到 Mission Control 時,視窗是否將被隱藏。

win.isHiddenInMissionControl() macOS

回傳 boolean - 當使用者切換到 Mission Control 時,視窗是否將被隱藏。

win.setAlwaysOnTop(flag[, level][, relativeLevel])

  • flag boolean
  • level string (可選) macOS Windows - 值包括 normalfloatingtorn-off-menumodal-panelmain-menustatuspop-up-menuscreen-saverdock (已棄用)。當 flag 為 true 時,預設值為 floating。當 flag 為 false 時,level 會重設為 normal。請注意,從 floating 到包含 status,視窗在 macOS 上放置在 Dock 下方,在 Windows 上放置在工作列下方。從 pop-up-menu 到更高層級,它在 macOS 上顯示在 Dock 上方,在 Windows 上顯示在工作列上方。請參閱 macOS 文件 以取得更多詳細資訊。
  • relativeLevel Integer (可選) macOS - 相對於給定的 level,將此視窗設定高多少層級。預設值為 0。請注意,Apple 不建議將層級設定高於 screen-saver 之上 1 層。

設定視窗是否應始終顯示在其他視窗的頂端。設定此項後,視窗仍然是普通視窗,而不是無法獲得焦點的工具箱視窗。

win.isAlwaysOnTop()

回傳 boolean - 視窗是否始終在其他視窗的頂端。

win.moveAbove(mediaSourceId)

  • mediaSourceId string - 視窗 ID 格式為 DesktopCapturerSource 的 id。例如 "window:1869:0"。

將視窗在 Z 軸順序上移到來源視窗之上。如果 mediaSourceId 不是視窗類型,或如果視窗不存在,則此方法會拋出錯誤。

win.moveTop()

將視窗移動到最頂層 (Z 軸順序),無論焦點是否在視窗上。

win.center()

將視窗移動到螢幕中心。

win.setPosition(x, y[, animate])

  • x Integer
  • y Integer
  • animate boolean (可選) macOS

將視窗移動到座標 xy

win.getPosition()

返回 Integer[] - 包含視窗的目前位置。

win.setTitle(title)

  • title string

將原生視窗的標題更改為 title

win.getTitle()

返回 string - 原生視窗的標題。

注意: 網頁的標題可能與原生視窗的標題不同。

win.setSheetOffset(offsetY[, offsetX]) macOS

  • offsetY Float
  • offsetX Float (選用)

變更 macOS 上工作表的附加點。預設情況下,工作表附加在視窗框架的正下方,但您可能希望將它們顯示在 HTML 渲染的工具列下方。例如:

const { BaseWindow } = require('electron')
const win = new BaseWindow()

const toolbarRect = document.getElementById('toolbar').getBoundingClientRect()
win.setSheetOffset(toolbarRect.height)

win.flashFrame(flag)

歷史記錄
  • flag boolean

開始或停止閃爍視窗以吸引使用者注意。

win.setSkipTaskbar(skip) macOS Windows

  • skip boolean

使視窗不在工作列中顯示。

win.setKiosk(flag)

  • flag boolean

進入或離開資訊站模式 (kiosk mode)。

win.isKiosk()

返回 boolean - 視窗是否處於資訊站模式 (kiosk mode)。

win.isTabletMode() Windows

返回 boolean - 視窗是否處於 Windows 10 平板模式。

由於 Windows 10 使用者可以將他們的 PC 當作平板電腦使用,在此模式下,應用程式可以選擇最佳化其平板電腦 UI,例如放大標題列和隱藏標題列按鈕。

此 API 返回視窗是否處於平板模式,並且 resize 事件可用於監聽平板模式的變更。

win.getMediaSourceId()

返回 string - 視窗 ID 格式為 DesktopCapturerSource 的 id。例如 "window:1324:0"。

更精確地說,格式為 window:id:other_id,其中 id 在 Windows 上是 HWND,在 macOS 上是 CGWindowID (uint64_t),在 Linux 上是 Window (unsigned long)。other_id 用於識別 Web 內容 (分頁),因此在同一個頂層視窗內。

win.getNativeWindowHandle()

返回 Buffer - 視窗的平台特定控制代碼。

控制代碼的原生類型在 Windows 上是 HWND,在 macOS 上是 NSView*,在 Linux 上是 Window (unsigned long)。

win.hookWindowMessage(message, callback) Windows

  • message Integer
  • callback Function
    • wParam Buffer - 提供給 WndProc 的 wParam
    • lParam Buffer - 提供給 WndProc 的 lParam

掛鉤 Windows 訊息。當在 WndProc 中收到訊息時,將調用 callback

win.isWindowMessageHooked(message) Windows

  • message Integer

返回 boolean - truefalse,取決於訊息是否被掛鉤。

win.unhookWindowMessage(message) Windows

  • message Integer

取消掛鉤視窗訊息。

win.unhookAllWindowMessages() Windows

取消掛鉤所有視窗訊息。

win.setRepresentedFilename(filename) macOS

  • filename string

設定視窗所代表檔案的路徑名稱,檔案的圖示將顯示在視窗的標題列中。

win.getRepresentedFilename() macOS

返回 string - 視窗所代表檔案的路徑名稱。

win.setDocumentEdited(edited) macOS

  • edited boolean

指定視窗的文件是否已被編輯,當設定為 true 時,標題列中的圖示將變為灰色。

win.isDocumentEdited() macOS

返回 boolean - 視窗的文件是否已被編輯。

win.setMenu(menu) Linux Windows

  • menu Menu | null

menu 設定為視窗的選單列。

win.removeMenu() Linux Windows

移除視窗的選單列。

win.setProgressBar(progress[, options])

  • progress Double
  • options Object (選用)
    • mode string Windows - 進度列的模式。可以是 nonenormalindeterminateerrorpaused

設定進度列中的進度值。有效範圍為 [0, 1.0]。

當進度 < 0 時移除進度列;當進度 > 1 時變更為不確定模式。

在 Linux 平台上,僅支援 Unity 桌面環境,您需要在 package.jsondesktopName 欄位中指定 *.desktop 檔案名稱。預設情況下,它將假定為 {app.name}.desktop

在 Windows 上,可以傳遞模式。接受的值為 nonenormalindeterminateerrorpaused。如果您在未設定模式 (但在有效範圍內設定值) 的情況下調用 setProgressBar,則將假定為 normal

win.setOverlayIcon(overlay, description) Windows

  • overlay NativeImage | null - 要顯示在工作列圖示右下角的圖示。如果此參數為 null,則會清除覆蓋圖示
  • description string - 將提供給協助工具螢幕閱讀器的描述

在目前的工作列圖示上設定一個 16 x 16 像素的覆蓋圖示,通常用於傳達某種應用程式狀態或被動地通知使用者。

win.invalidateShadow() macOS

使視窗陰影失效,以便根據目前的視窗形狀重新計算。

透明的 BaseWindow 有時會在 macOS 上留下視覺殘影。此方法可用於清除這些殘影,例如在執行動畫時。

win.setHasShadow(hasShadow)

  • hasShadow boolean

設定視窗是否應具有陰影。

win.hasShadow()

返回 boolean - 視窗是否具有陰影。

win.setOpacity(opacity) Windows macOS

  • opacity number - 介於 0.0 (完全透明) 和 1.0 (完全不透明) 之間

設定視窗的不透明度。在 Linux 上,不執行任何操作。超出範圍的數字值將被限制在 [0, 1] 範圍內。

win.getOpacity()

返回 number - 介於 0.0 (完全透明) 和 1.0 (完全不透明) 之間。在 Linux 上,始終返回 1。

win.setShape(rects) Windows Linux Experimental

  • rects Rectangle[] - 在視窗上設定形狀。傳遞空列表會使視窗恢復為矩形。

設定視窗形狀會決定系統允許繪圖和使用者互動的視窗區域。在給定區域之外,不會繪製任何像素,也不會註冊任何滑鼠事件。區域外的滑鼠事件將不會被該視窗接收,而是會落到視窗後面的任何內容上。

win.setThumbarButtons(buttons) Windows

返回 boolean - 按鈕是否已成功添加

在工作列按鈕佈局中,將具有指定按鈕集的縮圖工具列添加到視窗縮圖影像中。返回一個 boolean 物件,指示是否已成功添加縮圖。

由於空間有限,縮圖工具列中的按鈕數量不應超過 7 個。設定縮圖工具列後,由於平台的限制,無法移除該工具列。但是,您可以調用帶有空陣列的 API 來清除按鈕。

buttons 是一個 Button 物件的陣列

  • Button 物件
    • icon NativeImage - 縮圖工具列中顯示的圖示。
    • click Function
    • tooltip string (選用) - 按鈕工具提示的文字。
    • flags string[] (選用) - 控制按鈕的特定狀態和行為。預設情況下為 ['enabled']

flags 是一個陣列,可以包含以下 string

  • enabled - 按鈕處於活動狀態,使用者可以使用。
  • disabled - 按鈕已停用。它存在,但具有視覺狀態,指示它不會響應使用者操作。
  • dismissonclick - 當按鈕被點擊時,縮圖視窗立即關閉。
  • nobackground - 不繪製按鈕邊框,僅使用影像。
  • hidden - 按鈕不會向使用者顯示。
  • noninteractive - 按鈕已啟用,但不可互動;不會繪製按下按鈕狀態。此值適用於按鈕用於通知的情況。

win.setThumbnailClip(region) Windows

設定當滑鼠懸停在工作列中的視窗上方時,要顯示為縮圖影像的視窗區域。您可以通過指定空區域來將縮圖重置為整個視窗:{ x: 0, y: 0, width: 0, height: 0 }

win.setThumbnailToolTip(toolTip) Windows

  • toolTip string

設定當滑鼠懸停在工作列中的視窗縮圖上方時顯示的工具提示。

win.setAppDetails(options) Windows

  • options Object
    • appId string (選用) - 視窗的 應用程式使用者模型 ID。必須設定此 ID,否則其他選項將不起作用。
    • appIconPath string (選用) - 視窗的 重新啟動圖示
    • appIconIndex Integer (選用) - appIconPath 中圖示的索引。當未設定 appIconPath 時,將忽略此選項。預設值為 0
    • relaunchCommand string (選用) - 視窗的 重新啟動命令
    • relaunchDisplayName string (選用) - 視窗的 重新啟動顯示名稱

設定視窗工作列按鈕的屬性。

注意: relaunchCommandrelaunchDisplayName 必須始終一起設定。如果其中一個屬性未設定,則兩者都不會使用。

win.setIcon(icon) Windows Linux

變更視窗圖示。

win.setWindowButtonVisibility(visible) macOS

  • visible boolean

設定視窗的交通號誌按鈕是否應可見。

win.setAutoHideMenuBar(hide) Windows Linux

  • hide boolean

設定視窗選單列是否應自動隱藏。設定後,選單列僅在使用者按下單個 Alt 鍵時才會顯示。

如果選單列已可見,則調用 setAutoHideMenuBar(true) 不會立即隱藏它。

win.isMenuBarAutoHide() Windows Linux

返回 boolean - 選單列是否自動隱藏自身。

win.setMenuBarVisibility(visible) Windows Linux

  • visible boolean

設定選單列是否應可見。如果選單列為自動隱藏,使用者仍然可以通過按下單個 Alt 鍵來顯示選單列。

win.isMenuBarVisible() Windows Linux

返回 boolean - 選單列是否可見。

win.setVisibleOnAllWorkspaces(visible[, options]) macOS Linux

  • visible boolean
  • options Object (選用)
    • visibleOnFullScreen boolean (選用) macOS - 設定視窗是否應在全螢幕視窗之上可見。
    • skipTransformProcessType boolean (選用) macOS - 預設情況下,調用 setVisibleOnAllWorkspaces 將在 UIElementApplication 和 ForegroundApplication 之間轉換進程類型,以確保正確的行為。但是,這將在每次調用時短暫隱藏視窗和 Dock。如果您的視窗已經是 UIElementApplication 類型,您可以通過將 true 傳遞給 skipTransformProcessType 來繞過此轉換。

設定視窗是否應在所有工作區上可見。

注意: 此 API 在 Windows 上不執行任何操作。

win.isVisibleOnAllWorkspaces() macOS Linux

返回 boolean - 視窗是否在所有工作區上可見。

注意: 此 API 在 Windows 上始終返回 false。

win.setIgnoreMouseEvents(ignore[, options])

  • ignore boolean
  • options Object (選用)
    • forward boolean (選用) macOS Windows - 如果為 true,則將滑鼠移動訊息轉發到 Chromium,從而啟用滑鼠相關事件,例如 mouseleave。僅當 ignore 為 true 時使用。如果 ignore 為 false,則始終禁用轉發,而與此值無關。

使視窗忽略所有滑鼠事件。

在此視窗中發生的所有滑鼠事件都將傳遞到此視窗下方的視窗,但是如果此視窗具有焦點,它仍然會接收鍵盤事件。

win.setContentProtection(enable) macOS Windows

  • enable boolean

防止視窗內容被其他應用程式擷取。

在 macOS 上,它將 NSWindow 的 sharingType 設定為 NSWindowSharingNone。在 Windows 上,它使用 WDA_EXCLUDEFROMCAPTURE 調用 SetWindowDisplayAffinity。對於 Windows 10 版本 2004 及更高版本,視窗將完全從擷取中移除,舊版本的 Windows 行為類似於應用了 WDA_MONITOR,擷取黑色視窗。

win.setFocusable(focusable) macOS Windows

  • focusable boolean

變更視窗是否可以被聚焦。

在 macOS 上,它不會從視窗中移除焦點。

win.isFocusable() macOS Windows

返回 boolean - 視窗是否可以被聚焦。

win.setParentWindow(parent)

  • parent BaseWindow | null

parent 設定為目前視窗的父視窗,傳遞 null 會將目前視窗變成頂層視窗。

win.getParentWindow()

返回 BaseWindow | null - 父視窗,如果沒有父視窗,則返回 null

win.getChildWindows()

返回 BaseWindow[] - 所有子視窗。

win.setAutoHideCursor(autoHide) macOS

  • autoHide boolean

控制在輸入時是否隱藏游標。

win.selectPreviousTab() macOS

當啟用原生分頁且視窗中存在其他分頁時,選擇上一個分頁。

win.selectNextTab() macOS

當啟用原生分頁且視窗中存在其他分頁時,選擇下一個分頁。

win.showAllTabs() macOS

當啟用原生分頁時,顯示或隱藏分頁概觀。

win.mergeAllWindows() macOS

當啟用原生分頁且有多個開啟的視窗時,將所有視窗合併為一個具有多個分頁的視窗。

win.moveTabToNewWindow() macOS

如果啟用原生分頁且目前視窗中有一個以上的分頁,則將目前分頁移動到新視窗中。

win.toggleTabBar() macOS

如果啟用原生分頁且目前視窗中只有一個分頁,則切換分頁列的顯示狀態。

win.addTabbedWindow(baseWindow) macOS

  • baseWindow BaseWindow

在此視窗上新增一個視窗作為分頁,位於視窗實例的分頁之後。

win.setVibrancy(type) macOS

  • type string | null - 可以是 titlebarselectionmenupopoversidebarheadersheetwindowhudfullscreen-uitooltipcontentunder-windowunder-page。有關更多詳細資訊,請參閱 macOS 文件

為視窗新增生動效果。傳遞 null 或空字串將移除視窗上的生動效果。

win.setBackgroundMaterial(material) Windows

  • material string
    • auto - 讓桌面視窗管理員 (DWM) 自動決定此視窗的系統繪製背景材質。這是預設值。
    • none - 不繪製任何系統背景。
    • mica - 繪製對應於長壽視窗的背景材質效果。
    • acrylic - 繪製對應於暫時性視窗的背景材質效果。
    • tabbed - 繪製對應於具有分頁標題列的視窗的背景材質效果。

此方法設定瀏覽器視窗的系統繪製背景材質,包括非客戶區之後的區域。

有關更多詳細資訊,請參閱 Windows 文件

注意: 此方法僅在 Windows 11 22H2 及更高版本上受支援。

win.setWindowButtonPosition(position) macOS

為無框架視窗中的交通號誌按鈕設定自訂位置。傳遞 null 將重置位置為預設值。

win.getWindowButtonPosition() macOS

返回 Point | null - 無框架視窗中交通號誌按鈕的自訂位置,當沒有自訂位置時將返回 null

win.setTouchBar(touchBar) macOS

  • touchBar TouchBar | null

為目前視窗設定觸控列佈局。指定 nullundefined 會清除觸控列。此方法僅在機器具有觸控列時才有效。

注意: TouchBar API 目前處於實驗階段,可能會在未來的 Electron 版本中變更或移除。

win.setTitleBarOverlay(options) Windows Linux

  • options Object
    • color String (選用) - 啟用時,視窗控制項覆蓋的 CSS 顏色。
    • symbolColor String (選用) - 啟用時,視窗控制項覆蓋上符號的 CSS 顏色。
    • height 整數 (選填) - 標題列和視窗控制項覆蓋層的高度,以像素為單位。

在已啟用視窗控制項覆蓋層的視窗上,此方法會更新標題列覆蓋層的樣式。

在 Linux 上,如果未明確設定 symbolColor,則會自動計算 symbolColor,使其與 color 具有最小的可存取對比度。