跳到主要内容

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.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 })

窗口将始终显示在 窗口的顶部。

模态窗口是禁用父窗口的子窗口。要创建模态窗口,必须同时设置 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

new BaseWindow([options])

  • options BaseWindowConstructorOptions (可选)
    • width Integer (可选) - 窗口的像素宽度。默认为 800
    • height Integer (可选) - 窗口的像素高度。默认为 600
    • x Integer (可选) - (如果使用 y 则是必需的) 窗口距屏幕左侧的偏移量。默认为窗口居中。
    • y Integer (可选) - (如果使用 x 则是必需的) 窗口距屏幕顶部的偏移量。默认为窗口居中。
    • useContentSize boolean (可选) - widthheight 将用作网页的大小,这意味着实际窗口的大小将包含窗口框架的大小,并略微更大。默认为 false
    • center boolean (可选) - 在屏幕中心显示窗口。默认为 false
    • minWidth Integer (可选) - 窗口的最小宽度。默认为 0
    • minHeight Integer (可选) - 窗口的最小高度。默认为 0
    • maxWidth Integer (可选) - 窗口的最大宽度。默认为无限制。
    • maxHeight Integer (可选) - 窗口的最大高度。默认为无限制。
    • resizable boolean (可选) - 窗口是否可调整大小。默认为 true
    • movable boolean (可选) macOS Windows - 窗口是否可移动。这在 Linux 上未实现。默认为 true
    • minimizable boolean (可选) macOS Windows - 窗口是否可最小化。这在 Linux 上未实现。默认为 true
    • maximizable boolean (可选) macOS Windows - 窗口是否可最大化。这在 Linux 上未实现。默认为 true
    • closable boolean (可选) macOS Windows - 窗口是否可关闭。这在 Linux 上未实现。默认为 true
    • focusable boolean (可选) - 窗口是否可聚焦。默认为 true。在 Windows 上,设置 focusable: false 也意味着设置 skipTaskbar: true。在 Linux 上,设置 focusable: false 会使窗口停止与窗口管理器交互,因此窗口将始终在所有工作区中保持在顶部。
    • alwaysOnTop boolean (可选) - 窗口是否应始终保持在其他窗口之上。默认为 false
    • fullscreen boolean (可选) - 窗口是否应显示为全屏。当明确设置为 false 时,全屏按钮在 macOS 上将被隐藏或禁用。默认为 false
    • fullscreenable boolean (可选) - 窗口是否可进入全屏模式。在 macOS 上,还决定最大化/缩放按钮是切换全屏模式还是最大化窗口。默认为 true
    • simpleFullscreen boolean (可选) macOS - 在 macOS 上使用 Lion 之前的全屏模式。默认为 false
    • skipTaskbar boolean (可选) macOS Windows - 是否在任务栏中显示窗口。默认为 false
    • hiddenInMissionControl boolean (可选) macOS - 当用户切换到 Mission Control 时,窗口是否应被隐藏。
    • kiosk boolean (可选) - 窗口是否处于信息亭模式。默认为 false
    • title string (可选) - 默认窗口标题。默认为 "Electron"。如果在 loadURL() 加载的 HTML 文件中定义了 <title> HTML 标签,则此属性将被忽略。
    • icon (NativeImage | string) (可选) - 窗口图标。在 Windows 上,建议使用 ICO 图标以获得最佳视觉效果,您也可以将其留空,以便使用可执行文件的图标。
    • show boolean (可选) - 窗口创建时是否显示。默认为 true
    • frame boolean (可选) - 指定 false 创建无边框窗口。默认为 true
    • parent BaseWindow (可选) - 指定父窗口。默认为 null
    • modal boolean (可选) - 这是否是模态窗口。这仅在窗口是子窗口时有效。默认为 false
    • acceptFirstMouse boolean (可选) macOS - 单击非活动窗口是否也会点击到网页内容。在 macOS 上默认为 false。此选项在其他平台上不可配置。
    • disableAutoHideCursor boolean (可选) - 打字时是否隐藏光标。默认为 false
    • autoHideMenuBar boolean (可选) Linux Windows - 自动隐藏菜单栏,除非按下 Alt 键。默认为 false
    • enableLargerThanScreen boolean (可选) macOS - 允许窗口调整大小超过屏幕。仅与 macOS 相关,因为其他操作系统默认允许大于屏幕的窗口。默认为 false
    • backgroundColor string (可选) - 窗口背景颜色,支持 Hex、RGB、RGBA、HSL、HSLA 或命名 CSS 颜色格式。如果 transparent 设置为 true,则支持 #AARRGGBB 格式的 Alpha 通道。默认为 #FFF (白色)。更多信息请参阅 win.setBackgroundColor
    • hasShadow boolean (可选) - 窗口是否应具有阴影。默认为 true
    • opacity number (可选) macOS Windows - 设置窗口的初始不透明度,范围在 0.0 (完全透明) 和 1.0 (完全不透明) 之间。此设置仅在 Windows 和 macOS 上实现。
    • darkTheme boolean (可选) - 强制窗口使用深色主题,仅在某些 GTK+3 桌面环境上有效。默认为 false
    • transparent boolean (可选) - 使窗口透明。默认为 false。在 Windows 上,除非窗口是无边框的,否则无效。
    • type string (可选) - 窗口类型,默认为普通窗口。更多信息请参阅下方。
    • visualEffectState string (可选) macOS - 指定在 macOS 上材质外观应如何反映窗口活动状态。必须与 vibrancy 属性一起使用。可能的值有
      • followWindow - 背景应在窗口活动时自动显示为活动状态,非活动时显示为非活动状态。这是默认值。
      • active - 背景应始终显示为活动状态。
      • inactive - 背景应始终显示为非活动状态。
    • titleBarStyle string (可选) - 窗口标题栏的样式。默认为 default。可能的值有
      • default - 在 macOS 或 Windows 上分别显示标准标题栏。
      • hidden - 隐藏标题栏并显示全尺寸内容窗口。在 macOS 上,窗口左上角仍然有标准窗口控件(“交通灯”按钮)。在 Windows 和 Linux 上,当与 titleBarOverlay: true 结合使用时,将激活窗口控件叠加层(有关更多信息,请参阅 titleBarOverlay),否则不显示任何窗口控件。
      • hiddenInset macOS - 隐藏标题栏,并采用另一种外观,其中“交通灯”按钮距离窗口边缘略微内嵌。
      • customButtonsOnHover macOS - 隐藏标题栏并显示全尺寸内容窗口,“交通灯”按钮在鼠标悬停在窗口左上角时显示。注意:此选项目前是实验性的。
    • titleBarOverlay Object | Boolean (可选) - 在 macOS 上使用无边框窗口并结合 win.setWindowButtonVisibility(true),或使用 titleBarStyle 以便标准窗口控件(macOS 上的“交通灯”按钮)可见时,此属性启用窗口控件叠加层 JavaScript APICSS 环境变量。指定 true 将使用默认系统颜色显示叠加层。默认为 false
      • color String (可选) Windows Linux - 启用时窗口控件叠加层的 CSS 颜色。默认为系统颜色。
      • symbolColor String (可选) Windows Linux - 启用时窗口控件叠加层上符号的 CSS 颜色。默认为系统颜色。
      • height Integer (可选) - 标题栏和窗口控件叠加层的像素高度。默认为系统高度。
    • trafficLightPosition Point (可选) macOS - 在无边框窗口中为“交通灯”按钮设置自定义位置。
    • roundedCorners boolean (可选) macOS Windows - 无边框窗口是否应具有圆角。默认为 true。将此属性设置为 false 将阻止窗口在 macOS 上可全屏化。在 Windows 11 Build 22000 之前的 Windows 版本上,此属性无效,无边框窗口将没有圆角。
    • thickFrame boolean (可选) - 在 Windows 上为无边框窗口使用 WS_THICKFRAME 样式,该样式添加了标准窗口框架。将其设置为 false 将移除窗口阴影和窗口动画。默认为 true
    • vibrancy string (可选) macOS - 为窗口添加一种活力效果类型,仅在 macOS 上有效。可以是 appearance-based, titlebar, selection, menu, popover, sidebar, header, sheet, window, hud, fullscreen-ui, tooltip, content, under-window, 或 under-page
    • backgroundMaterial string (可选) Windows - 设置窗口的系统绘制背景材质,包括非客户端区域后面的部分。可以是 auto, none, mica, acrylictabbed。更多信息请参阅 win.setBackgroundMaterial
    • zoomToPageWidth boolean (可选) macOS - 控制在 macOS 上当 Option + 单击工具栏上的绿色“交通灯”按钮或单击“窗口”>“缩放”菜单项时的行为。如果为 true,窗口在缩放时将扩展到网页的首选宽度,false 将使其缩放到屏幕宽度。这也会影响直接调用 maximize() 时的行为。默认为 false
    • tabbingIdentifier string (可选) macOS - 标签分组名称,允许将窗口作为原生标签页打开。具有相同标签标识符的窗口将分组在一起。这还会在窗口的标签栏中添加一个原生新建标签按钮,并允许您的 app 和窗口接收 new-window-for-tab 事件。

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

    type 选项的可能值和行为因平台而异。可能的值有

    • 在 Linux 上,可能的类型有 desktop, dock, toolbar, splash, notification
      • desktop 类型将窗口放置在桌面背景窗口级别 (kCGDesktopWindowLevel - 1)。但是请注意,桌面窗口不会接收焦点、键盘或鼠标事件。您仍然可以使用 globalShortcut 少量接收输入。
      • dock 类型创建类似 Dock 的窗口行为。
      • toolbar 类型创建具有工具栏外观的窗口。
      • splash 类型以特定方式运行。它不可拖动,即使窗口主体的 CSS 样式包含 -webkit-app-region: drag。此类型通常用于启动画面。
      • notification 类型创建行为类似于系统通知的窗口。
    • 在 macOS 上,可能的类型有 desktop, textured, panel
      • textured 类型添加金属渐变外观。此选项已废弃
      • desktop 类型将窗口放置在桌面背景窗口级别 (kCGDesktopWindowLevel - 1)。请注意,桌面窗口不会接收焦点、键盘或鼠标事件,但您可以使用 globalShortcut 少量接收输入。
      • panel 类型通过在运行时添加 NSWindowStyleMaskNonactivatingPanel 样式遮罩(通常保留给 NSPanel)使窗口能够浮动在全屏应用之上。此外,窗口将显示在所有空间(桌面)上。
    • 在 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) - 正在拖动以调整大小的窗口边缘。可以是 bottom, left, right, top-left, top-right, bottom-leftbottom-right

在窗口调整大小之前触发。调用 event.preventDefault() 将阻止窗口调整大小。

请注意,这仅在手动调整窗口大小时触发。使用 setBounds/setSize 调整窗口大小不会触发此事件。

edge 选项的可能值和行为因平台而异。可能的值有

  • 在 Windows 上,可能的值为 bottom, top, left, right, top-left, top-right, bottom-left, bottom-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 boolean

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

事件:'app-command' Windows Linux

返回

  • event Event
  • command string

当调用应用命令时触发。这些通常与键盘媒体键或浏览器命令相关,以及 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 string

在三指滑动时触发。可能的方向有 up, right, down, left

此事件底层的方法旨在处理较旧的 macOS 风格的触控板滑动,其中屏幕上的内容不会随滑动移动。大多数 macOS 触控板不再配置为允许这种类型的滑动,因此为了使其正常触发,必须将 系统偏好设置 > 触控板 > 更多手势 中的“在页面之间轻扫”偏好设置为“使用两指或三指轻扫”。

事件:'rotate-gesture' macOS

返回

  • event Event
  • rotation Float

在触控板旋转手势时触发。持续触发直到旋转手势结束。每次触发时的 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,如果未设置则为 undefined

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) 是一个无操作 (no-op),尽管获取器 (getter) 返回 true

win.maximizable macOS Windows

一个布尔值 (boolean) 属性,决定了用户是否可以手动最大化窗口。

在 Linux 上,设置器 (setter) 是一个无操作 (no-op),尽管获取器 (getter) 返回 true

win.fullScreenable

一个布尔值 (boolean) 属性,决定了最大化/缩放窗口按钮是切换全屏模式还是最大化窗口。

win.resizable

一个布尔值 (boolean) 属性,决定了用户是否可以手动调整窗口大小。

win.closable macOS Windows

一个布尔值 (boolean) 属性,决定了用户是否可以手动关闭窗口。

在 Linux 上,设置器 (setter) 是一个无操作 (no-op),尽管获取器 (getter) 返回 true

win.movable macOS Windows

一个布尔值 (boolean) 属性,决定了用户是否可以移动窗口。

在 Linux 上,设置器 (setter) 是一个无操作 (no-op),尽管获取器 (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 只读

一个布尔值 (boolean) 属性,指示窗口是否通过 窗口吸附 (Snap) 进行排列。

实例方法

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 已经考虑到了窗口大小与其内容大小之间的差异。

考虑一个带有高清视频播放器和相关控件的普通窗口。可能左边缘有 15 像素的控件,右边缘有 25 像素的控件,播放器下方有 50 像素的控件。为了在播放器本身内部维持 16:9 的宽高比(高清 @1920x1080 的标准宽高比),我们将调用此函数,参数为 16/9 和 { width: 40, height: 50 }。第二个参数不关心额外宽度和高度在内容视图中的位置——只关心它们是否存在。只需将内容视图内所有额外宽度和高度区域相加即可。

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

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

win.setBackgroundColor(backgroundColor)

  • backgroundColor 字符串 (string) - 十六进制 (Hex)、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 字符串 (string) - 要用 QuickLook 预览的文件的绝对路径。这很重要,因为 Quick Look 使用路径上的文件名和文件扩展名来确定要打开的文件的内容类型。
  • displayName 字符串 (string) (可选的) - 要在 Quick Look 模态视图上显示的文件名。这纯粹是视觉效果,不影响文件的内容类型。默认为 path

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

win.closeFilePreview() macOS

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

win.setBounds(bounds[, animate])

调整窗口大小并将其移动到提供的边界。任何未提供的属性将默认为其当前值。

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) 高度。托盘高度随时间变化并取决于操作系统,但在 20-40px 之间。传递小于托盘高度的值将导致窗口与托盘对齐。

win.getBounds()

返回 矩形 (Rectangle) - 窗口的 bounds 作为 Object

注意: 在 macOS 上,返回的 y 坐标值至少是 托盘 (Tray) 高度。例如,调用 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])

调整窗口客户端区域(例如,网页)的大小并将其移动到提供的边界。

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 布尔值 (boolean) (可选的) macOS

将窗口大小调整为 widthheight。如果 widthheight 小于任何设定的最小尺寸限制,窗口将自动调整到其最小尺寸。

win.getSize()

返回 整数数组 (Integer[]) - 包含窗口的宽度和高度。

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

  • width 整数 (Integer)
  • height 整数 (Integer)
  • animate 布尔值 (boolean) (可选的) 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 布尔值 (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 - 值包括 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 布尔值 (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)

进入或离开信息亭模式。

win.isKiosk()

返回 布尔值 (boolean) - 窗口是否处于信息亭模式。

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 用于标识网页内容(标签页),以便在同一个顶层窗口内。

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)

卸载 Windows 消息钩子。

win.unhookAllWindowMessages() Windows

卸载所有 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.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 并传入空数组来清除按钮。

buttonsButton 对象的数组。

  • 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。必须设置此项,否则其他选项将不起作用。
    • 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.isSnapped() Windows

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

窗口通过鼠标悬停在窗口最大化按钮上时显示的按钮或将其拖动到屏幕边缘来对齐(Snap)。

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

  • visible boolean
  • options 对象 (Object) (可选的)
    • visibleOnFullScreen boolean (可选) macOS - 设置窗口是否应在全屏窗口上方可见。
    • skipTransformProcessType boolean (可选) macOS - 调用 setVisibleOnAllWorkspaces 默认会转换进程类型(UIElementApplication 和 ForegroundApplication)以确保正确行为。然而,每次调用时,这都会短暂隐藏窗口和 Dock。如果你的窗口已经是 UIElementApplication 类型,可以通过将 skipTransformProcessType 设为 true 来跳过此转换。

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

注意: 此 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 上,它调用 SetWindowDisplayAffinity 并传入 WDA_EXCLUDEFROMCAPTURE。对于 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 Integer (可选) - 标题栏和窗口控制叠加的高度(以像素为单位)。

在已启用窗口控制叠加的窗口上,此方法更新标题栏叠加的样式。

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