跳转到主要内容

BaseWindow

创建和控制窗口。

进程: 主进程

注意

BaseWindow 提供了一种灵活的方式,可以在单个窗口中组合多个 web views。对于只有一个全尺寸 web view 的窗口,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.js.cn')
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 添加到 BaseWindow,并且 BaseWindow 关闭时,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

警告

Electron 的内置类不能在用户代码中被继承。有关更多信息,请参阅 FAQ

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 文件中定义了 <title> 标签,则此属性将被忽略。
    • icon (NativeImage | 字符串) (可选) - 窗口图标。在 Windows 上,建议使用 ICO 图标以获得最佳视觉效果,您也可以将其留空,以便使用可执行文件的图标。
    • show 布尔值 (可选) - 窗口是否应在创建时显示。默认值为 true
    • frame 布尔值 (可选) - 指定 false 以创建 无边框窗口。默认值为 true
    • parent BaseWindow (可选) - 指定父窗口。默认值为 null
    • modal 布尔值 (可选) - 是否为模态窗口。只有当窗口是子窗口时才有效。默认值为 false
    • acceptFirstMouse 布尔值 (可选) macOS - 单击非活动窗口是否也会单击到 web 内容中。默认值为 macOS 上的 false。此选项在其他平台上不可配置。
    • disableAutoHideCursor 布尔值 (可选) - 是否在键入时隐藏光标。默认值为 false
    • autoHideMenuBar 布尔值 (可选) Linux Windows - 除非按下 Alt 键,否则自动隐藏菜单栏。默认值为 false
    • enableLargerThanScreen 布尔值 (可选) macOS - 启用窗口调整大小到大于屏幕。仅适用于 macOS,因为其他操作系统默认允许大于屏幕的窗口。默认值为 false
    • backgroundColor 字符串 (可选) - 窗口的背景颜色,采用十六进制、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 上,除非窗口是无边框窗口,否则不起作用。当您将 View 添加到 BaseWindow 时,您需要在该 view 上调用 view.setBackgroundColor,并使用透明的背景颜色,才能使其背景也透明。
    • 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 APIsCSS Environment Variables。指定 true 将导致使用默认系统颜色进行叠加。默认值为 false
      • color String (optional) Windows Linux - 启用时窗口控件覆盖层的 CSS 颜色。默认值为系统颜色。
      • symbolColor String (optional) Windows Linux - 启用时窗口控件覆盖层上符号的 CSS 颜色。默认值为系统颜色。
      • height Integer (optional) - 标题栏和窗口控件覆盖层的高度,以像素为单位。默认值为系统高度。
    • accentColor boolean | string (optional) Windows - 窗口的强调色。默认情况下,遵循系统设置中的用户偏好。设置为 false 可显式禁用,或以十六进制、RGB、RGBA、HSL、HSLA 或命名的 CSS 颜色格式设置颜色。将忽略 Alpha 值。
    • trafficLightPosition Point (optional) macOS - 为无边框窗口设置交通灯按钮的自定义位置。
    • roundedCorners boolean (optional) macOS Windows - 是否使无边框窗口具有圆角。默认值为 true。在 Windows 11 Build 22000 之前的版本上,此属性无效,无边框窗口将没有圆角。
    • thickFrame boolean (optional) Windows - 在 Windows 上的无边框窗口中使用 WS_THICKFRAME 样式,这会添加标准窗口框架。将其设置为 false 将删除窗口阴影和窗口动画,并禁用通过拖动窗口边缘来调整窗口大小的功能。默认值为 true
    • vibrancy string (optional) macOS - 在 macOS 上为窗口添加一种活力效果。可以是 appearance-basedtitlebarselectionmenupopoversidebarheadersheetwindowhudfullscreen-uitooltipcontentunder-windowunder-page
    • backgroundMaterial string (optional) Windows - 设置窗口的系统绘制背景材质,包括非客户端区域之后。可以是 autononemicaacrylictabbed。请参阅 win.setBackgroundMaterial 以获取更多信息。
    • zoomToPageWidth boolean (optional) macOS - 控制在 macOS 上单击工具栏上的绿色停止按钮或单击“窗口 > 缩放”菜单项时,macOS 上的行为。如果为 true,则窗口将增长到网页的首选宽度进行缩放,而 false 将使其缩放到屏幕宽度。这也会影响直接调用 maximize() 时的行为。默认值为 false
    • tabbingIdentifier string (optional) macOS - 选项卡组名称,允许将窗口作为原生选项卡打开。具有相同选项卡标识符的窗口将被分组在一起。这还会为您的窗口选项卡栏添加一个原生的新选项卡按钮,并允许您的 app 和窗口接收 new-window-for-tab 事件。

    在使用 minWidth/maxWidth/ minHeight/maxHeight 设置最小或最大窗口大小时,它仅约束用户。它不会阻止您传递不符合大小约束的尺寸到 setBounds/setSizeBrowserWindow 的构造函数。

    type 选项的可能值和行为取决于平台。可能的值是

    • 在 Linux 上,可能的类型是 desktopdocktoolbarsplashnotification
      • desktop 类型将窗口放置在桌面背景窗口级别 (kCGDesktopWindowLevel - 1)。但是,请注意,桌面窗口将无法接收焦点、键盘或鼠标事件。您仍然可以使用 globalShortcut 偶尔接收输入。
      • dock 类型创建类似停靠的窗口行为。
      • toolbar 类型创建具有工具栏外观的窗口。
      • splash 类型表现出一种特殊的方式。即使窗口的 body CSS 样式包含 -webkit-app-region: drag,它也无法拖动。此类型通常用于启动画面。
      • notification 类型创建的行为类似于系统通知的窗口。
    • 在 macOS 上,可能的类型是 desktoptexturedpanel
      • textured 类型添加金属渐变外观。此选项已**弃用**。
      • desktop 类型将窗口放置在桌面背景窗口级别 (kCGDesktopWindowLevel - 1)。请注意,桌面窗口将无法接收焦点、键盘或鼠标事件,但您可以使用 globalShortcut 偶尔接收输入。
      • panel 类型通过在运行时添加通常为 NSPanel 保留的 NSWindowStyleMaskNonactivatingPanel 样式掩码,使窗口能够在全屏应用程序之上浮动。此外,窗口将出现在所有空间(桌面)上。
    • 在 Windows 上,可能的类型是 toolbar

实例事件

使用 new BaseWindow 创建的对象会发出以下事件

注意

某些事件仅在特定操作系统上可用,并已相应标记。

事件: 'close'

返回

  • event 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 Event

在窗口失去焦点时发出。

事件: 'focus'

返回

  • event Event

在窗口获得焦点时发出。

事件: 'show'

在窗口显示时发出。

事件: 'hide'

在窗口隐藏时发出。

事件: 'maximize'

在窗口最大化时发出。

事件: 'unmaximize'

在窗口退出最大化状态时发出。

事件: 'minimize'

在窗口最小化时发出。

事件: 'restore'

在窗口从最小化状态恢复时发出。

事件: 'will-resize' macOS Windows

返回

  • event Event
  • newBounds Rectangle - 窗口正在调整为的大小。
  • details Object
    • edge (string) - 正在拖动进行调整的窗口边缘。可以是 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 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 Event
  • isAlwaysOnTop 布尔值

当窗口被设置为或取消设置为始终显示在其他窗口之上时发出。

事件: 'app-command' Windows Linux

返回

  • event Event
  • command 字符串

App 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 Event
  • direction 字符串

在三指滑动时发出。可能的方向是 uprightdownleft

此事件的基础方法构建为处理旧版 macOS 风格的触控板滑动,在这种滑动中,屏幕上的内容不会随滑动而移动。大多数 macOS 触控板未配置为允许这种类型的滑动,因此为了正确发出此事件,必须将“系统偏好设置 > 触控板 > 更多手势”中的“用两或三根手指滑动”首选项设置为“用两或三根手指滑动”。

事件: 'rotate-gesture' macOS

返回

  • event Event
  • rotation 浮点数

在触控板旋转手势时发出。在旋转手势结束之前持续发出。每次发出的 rotation 值是自上次发出以来的旋转角度(以度为单位)。旋转手势的最后一次发出的事件值始终为 0。逆时针旋转值为正,顺时针旋转值为负。

事件: 'sheet-begin' macOS

当窗口打开一个表单时发出。

事件: 'sheet-end' macOS

当窗口关闭一个表单时发出。

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

当原生的新标签按钮被点击时发出。

事件: 'system-context-menu' Windows Linux

返回

  • event Event
  • point Point - 触发上下文菜单的屏幕坐标。

当窗口上触发系统上下文菜单时发出,这通常仅在用户右键单击窗口的非客户端区域时触发。这是窗口标题栏或您在无边框窗口中声明为 -webkit-app-region: drag 的任何区域。

调用 event.preventDefault() 将阻止菜单显示。

要将 point 转换为 DIP,请使用 screen.screenToDipPoint(point)

静态方法

BaseWindow 类具有以下静态方法

BaseWindow.getAllWindows()

返回 BaseWindow[] - 所有已打开的浏览器窗口的数组。

BaseWindow.getFocusedWindow()

返回 BaseWindow | null - 此应用程序中获得焦点的窗口,否则返回 null

BaseWindow.fromId(id)

  • id Integer

返回 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

win.autoHideMenuBar Linux Windows

一个 boolean 属性,用于确定窗口菜单栏是否应自动隐藏。设置后,菜单栏仅在用户按下单个 Alt 键时才会显示。

如果菜单栏已经可见,则将此属性设置为 true 不会立即隐藏它。

win.simpleFullScreen

一个 boolean 属性,用于确定窗口是否处于简单的(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 属性,用于定义仅提供给辅助工具(如屏幕阅读器)的替代标题。此字符串对用户不可见。

win.snapped Windows Readonly

一个 boolean 属性,指示窗口是否通过 “窗口捕捉” 功能排列。

实例方法

使用 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 10.7(Lion)之前版本中发现的本机全屏行为。

win.isSimpleFullScreen() macOS

返回 boolean - 窗口是否处于简单的(pre-Lion)全屏模式。

win.isNormal()

返回 boolean - 窗口是否处于正常状态(未最大化、未最小化、未处于全屏模式)。

win.setAspectRatio(aspectRatio[, extraSize])

  • aspectRatio Float - 保持内容视图某些部分宽高比的比例。
  • extraSize Size (可选) macOS - 不包含在宽高比计算中的额外大小。

这将使窗口保持宽高比。额外的尺寸允许开发人员拥有空间,以像素为单位指定,不包含在宽高比计算中。此 API 已经考虑了窗口大小与其内容大小之间的差异。

考虑一个带有高清视频播放器和相关控件的普通窗口。也许左边缘有 15 像素的控件,右边缘有 25 像素的控件,播放器下方有 50 像素的控件。为了在播放器本身内保持 16:9 的宽高比(高清 1920x1080 的标准宽高比),我们将使用 16/9 和 { width: 40, height: 50 } 作为参数调用此函数。第二个参数不在乎额外的宽度和高度位于内容视图的何处——只知道它们存在。求和内容视图中拥有的任何额外的宽度和高度区域。

当窗口使用 win.setSize 等 API 以编程方式调整大小时,宽高比不会得到尊重。

要重置宽高比,将 0 作为 aspectRatio 值传入:win.setAspectRatio(0)

win.setBackgroundColor(backgroundColor)

  • backgroundColor 字符串 - 颜色采用十六进制、RGB、RGBA、HSL、HSLA 或命名的 CSS 颜色格式。十六进制格式的 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 字符串 - 要使用 QuickLook 预览的文件的绝对路径。这很重要,因为 Quick Look 使用路径中的文件名和文件扩展名来确定要打开的文件的内容类型。
  • displayName 字符串 (可选) - 在 Quick Look 模态视图中显示的文件的名称。这纯粹是视觉上的,不会影响文件的内容类型。默认值为 path

使用 Quick Look 预览给定路径下的文件。

win.closeFilePreview() macOS

关闭当前打开的 Quick Look 面板。

win.setBounds(bounds[, animate])

  • bounds Partial<Rectangle>
  • animate 布尔值 (可选) 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 坐标值不能小于 托盘 高度。托盘高度随时间变化,并且取决于操作系统,但介于 20-40 像素之间。传递的值低于托盘高度会导致窗口与托盘对齐。

win.getBounds()

返回 Rectangle - 窗口的 bounds 作为 Object

注意

在 macOS 上,返回的 y 坐标值至少是 托盘 高度。例如,调用 win.setBounds({ x: 25, y: 20, width: 800, height: 600 }),托盘高度为 38,意味着 win.getBounds() 将返回 { x: 25, y: 38, width: 800, height: 600 }

win.getBackgroundColor()

返回 string - 获取窗口的背景颜色,格式为十六进制 (#RRGGBB)。

请参阅 设置 backgroundColor

注意

alpha 值与红、绿、蓝值一起返回。

win.setContentBounds(bounds[, animate])

  • bounds Rectangle
  • animate 布尔值 (可选) 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 Integer
  • height Integer
  • animate 布尔值 (可选) macOS

将窗口调整为 widthheight。如果 widthheight 低于任何设置的最小尺寸约束,窗口将调整到其最小尺寸。

win.getSize()

返回 Integer[] - 包含窗口的宽度和高度。

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

  • width Integer
  • height Integer
  • animate 布尔值 (可选) macOS

将窗口的客户端区域(例如,网页)调整为 widthheight

win.getContentSize()

返回 Integer[] - 包含窗口客户端区域的宽度和高度。

win.setMinimumSize(width, height)

  • width Integer
  • height Integer

将窗口的最小尺寸设置为 widthheight

win.getMinimumSize()

返回 Integer[] - 包含窗口的最小宽度和高度。

win.setMaximumSize(width, height)

  • width Integer
  • height Integer

将窗口的最大尺寸设置为 widthheight

win.getMaximumSize()

返回 Integer[] - 包含窗口的最大宽度和高度。

win.setResizable(resizable)

  • resizable 布尔值

设置窗口是否可以由用户手动调整大小。

win.isResizable()

返回 boolean - 窗口是否可以由用户手动调整大小。

win.setMovable(movable) macOS Windows

  • movable 布尔值

设置窗口是否可以由用户移动。在 Linux 上不起作用。

win.isMovable() macOS Windows

返回 boolean - 窗口是否可以由用户移动。

在 Linux 上始终返回 true

win.setMinimizable(minimizable) macOS Windows

  • minimizable 布尔值

设置窗口是否可以由用户手动最小化。在 Linux 上不起作用。

win.isMinimizable() macOS Windows

返回 boolean - 窗口是否可以由用户手动最小化。

在 Linux 上始终返回 true

win.setMaximizable(maximizable) macOS Windows

  • maximizable 布尔值

设置窗口是否可以由用户手动最大化。在 Linux 上不起作用。

win.isMaximizable() macOS Windows

返回 boolean - 窗口是否可以由用户手动最大化。

在 Linux 上始终返回 true

win.setFullScreenable(fullscreenable)

  • fullscreenable 布尔值

设置最大化/缩放窗口按钮是否切换全屏模式或最大化窗口。

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 - 值包括 normal, floating, torn-off-menu, modal-panel, main-menu, status, pop-up-menu, screen-saver,以及 dock (已弃用)。当 flag 为 true 时,默认值为 floating。当 flag 为 false 时,level 会重置为 normal。请注意,从 floatingstatus 包含,窗口将放置在 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 布尔值 (可选) macOS

将窗口移动到 xy

win.getPosition()

返回 Integer[] - 包含窗口的当前位置。

win.setTitle(title)

  • title string

将原生窗口的标题更改为 title

win.getTitle()

返回 string - 原生窗口的标题。

注意

网页的标题可能与原生窗口的标题不同。

win.setSheetOffset(offsetY[, offsetX]) macOS

  • offsetY Float
  • offsetX Float (可选)

更改 macOS 上 sheet 的附着点。默认情况下,sheet 附着在窗口框架下方,但您可能希望在 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

进入或退出全屏模式。

win.isKiosk()

返回 boolean - 窗口是否处于全屏模式。

win.isTabletMode() Windows

返回 boolean - 窗口是否处于 Windows 10 平板模式。

由于 Windows 10 用户可以 像平板电脑一样使用他们的电脑,在此模式下,应用程序可以选择优化其 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 - 进度条的模式。可以是 none, normal, indeterminate, errorpaused

设置进度条中的进度值。有效范围是 [0, 1.0]。

当进度小于 0 时删除进度条;当进度大于 1 时更改为不确定模式。

在 Linux 平台上,仅支持 Unity 桌面环境,您需要在 package.json 中将 *.desktop 文件名指定为 desktopName 字段。默认情况下,它将假定 {app.name}.desktop

在 Windows 上,可以传递一种模式。允许的值有 nonenormalindeterminateerrorpaused。 如果在未设置模式的情况下调用 setProgressBar(但值在有效范围内),则假定为 normal

win.setOverlayIcon(overlay, description) Windows

  • overlay NativeImage | null - 要显示在任务栏图标右下角的图标。 如果此参数为 null,则清除叠加层
  • description string - 将提供给辅助功能屏幕阅读器的描述

将 16 x 16 像素的叠加层设置为当前任务栏图标,通常用于传达某种应用程序状态或被动地通知用户。

win.invalidateShadow() macOS

使窗口阴影失效,以便根据当前窗口形状重新计算。

在 macOS 上,透明的 BaseWindow 有时会留下视觉伪影。当执行动画时,可以使用此方法清除这些伪影。

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 来清除按钮。

buttonsButton 对象数组

  • Button 对象
    • icon NativeImage - 在缩略图工具栏中显示的图标。
    • click Function
    • tooltip string (optional) - 按钮工具提示的文本。
    • flags string[] (optional) - 控制按钮的特定状态和行为。默认值为 ['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 (可选) - 窗口的 App User Model ID。 必须设置,否则其他选项将无效。
    • appIconPath string (可选) - 窗口的 重新启动图标
    • appIconIndex Integer (可选) - appIconPath 中的图标索引。 在未设置 appIconPath 时忽略。 默认值为 0
    • relaunchCommand string (可选) - 窗口的 重新启动命令
    • relaunchDisplayName string (可选) - 窗口的 重新启动显示名称

设置窗口任务栏按钮的属性。

注意

relaunchCommandrelaunchDisplayName 必须始终一起设置。 如果其中一个属性未设置,则两者都不会使用。

win.setAccentColor(accentColor) Windows

  • accentColor boolean | string | null - 窗口的强调色。 默认情况下,遵循系统设置中的用户偏好。 要重置为系统默认值,请传递 null

设置系统强调色和活动窗口边框的突出显示。

accentColor 参数接受以下值

  • 颜色字符串 - 类似于 true,但使用标准的 CSS 颜色格式(Hex、RGB、RGBA、HSL、HSLA 或命名颜色)设置自定义强调色。 RGBA/HSLA 格式中的 Alpha 值将被忽略,颜色将被视为完全不透明。
  • true - 启用窗口的强调色突出显示,使用系统强调色,无论系统设置中是否为窗口启用了强调色。
  • false - 禁用窗口的强调色突出显示,无论系统设置中是否当前为窗口启用了强调色。
  • null - 将窗口强调色行为重置为遵循系统设置中设置的行为。

示例

const win = new BrowserWindow({ frame: false })

// Set red accent color.
win.setAccentColor('#ff0000')

// RGB format (alpha ignored if present).
win.setAccentColor('rgba(255,0,0,0.5)')

// Enable accent color, using the color specified in System Settings.
win.setAccentColor(true)

// Disable accent color.
win.setAccentColor(false)

// Reset window accent color behavior to follow behavior set in System Settings.
win.setAccentColor(null)

win.getAccentColor() Windows

返回 string | boolean - 以十六进制 RGB 格式显示的系统强调色和活动窗口边框的突出显示。

如果窗口设置了与系统强调色不同的颜色,则将返回窗口强调色。 否则,将返回一个布尔值,其中 true 表示窗口使用全局系统强调色,而 false 表示窗口禁用强调色突出显示。

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.isSnapped() Windows

返回 boolean - 窗口是否通过 Snap 方式排列。

窗口可以通过悬停在窗口最大化按钮上显示的按钮或将其拖动到屏幕边缘来捕捉。

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

  • visible boolean
  • options Object (可选)
    • visibleOnFullScreen 布尔值 (可选) macOS - 设置窗口是否应在全屏窗口之上可见。
    • skipTransformProcessType 布尔值 (可选) macOS - 默认情况下,调用 setVisibleOnAllWorkspaces 会在 UIElementApplication 和 ForegroundApplication 之间转换进程类型,以确保正确的行为。但是,每次调用时都会隐藏窗口并停靠一段时间。如果您的窗口已经是 UIElementApplication 类型,则可以通过将 true 传递给 skipTransformProcessType 来绕过此转换。

设置窗口是否应在所有工作区中可见。

注意

此 API 在 Windows 上不起作用。

win.isVisibleOnAllWorkspaces() macOS Linux

返回 布尔值 - 窗口是否在所有工作区中可见。

注意

此 API 始终在 Windows 上返回 false。

win.setIgnoreMouseEvents(ignore[, options])

  • ignore boolean
  • options Object (可选)
    • forward 布尔值 (可选) 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.isContentProtected() macOS Windows

返回 布尔值 - 内容保护是否当前启用。

win.setFocusable(focusable) macOS Windows

  • focusable 布尔值

更改窗口是否可以获得焦点。

在 macOS 上,它不会从窗口移除焦点。

win.isFocusable() macOS Windows

返回 布尔值 - 窗口是否可以获得焦点。

win.setParentWindow(parent)

  • parent BaseWindow | null

parent 设置为当前窗口的父窗口,传递 null 将使当前窗口成为顶级窗口。

win.getParentWindow()

返回 BaseWindow | null - 父窗口或如果没有父窗口则返回 null

win.getChildWindows()

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

win.setAutoHideCursor(autoHide) macOS

  • autoHide 布尔值

控制在键入时是否隐藏光标。

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 字符串 | null - 可以是 titlebarselectionmenupopoversidebarheadersheetwindowhudfullscreen-uitooltipcontentunder-windowunder-page。有关更多详细信息,请参阅 macOS 文档

为窗口添加活力效果。传递 null 或空字符串将移除窗口上的活力效果。

win.setBackgroundMaterial(material) Windows

  • material 字符串
    • 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 字符串 (可选) - 启用后窗口控件覆盖的 CSS 颜色。
    • symbolColor 字符串 (可选) - 启用后窗口控件覆盖上符号的 CSS 颜色。
    • height 整数 (可选) - 标题栏和窗口控件覆盖的高度(以像素为单位)。

在已经启用窗口控件覆盖的窗口上,此方法更新标题栏覆盖的样式。

在 Linux 上,如果未显式设置,则 symbolColor 会自动计算为与 color 具有最小可访问对比度的颜色。