BrowserWindow
Создавайте и управляйте окнами браузера.
Процесс: Основной
Этот модуль нельзя использовать, пока не будет отправлено событие ready модуля app.
// In the main process.
const { BrowserWindow } = require('electron')
const win = new BrowserWindow({ width: 800, height: 600 })
// Load a remote URL
win.loadURL('https://github.com')
// Or load a local HTML file
win.loadFile('index.html')
Настройка окна
Класс BrowserWindow предоставляет различные способы изменения внешнего вида и поведения окон вашего приложения. Более подробную информацию см. в руководстве Настройка окон.
Грамотное отображение окна
При загрузке страницы в окно напрямую пользователи могут увидеть поэтапную загрузку страницы, что не является хорошим опытом для нативного приложения. Чтобы окно отображалось без визуальной вспышки, существуют два решения для разных ситуаций.
Использование события ready-to-show
При загрузке страницы событие ready-to-show будет отправлено, когда процесс рендеринга страницы впервые отобразит страницу, если окно еще не показано. Отображение окна после этого события не вызовет визуальной вспышки:
const { BrowserWindow } = require('electron')
const win = new BrowserWindow({ show: false })
win.once('ready-to-show', () => {
win.show()
})
Это событие обычно отправляется после события did-finish-load, но для страниц с множеством удаленных ресурсов оно может быть отправлено до события did-finish-load.
Обратите внимание, что использование этого события предполагает, что рендерер будет считаться «видимым» и будет отрисовываться, даже если show равно false. Это событие никогда не будет отправлено, если вы используете paintWhenInitiallyHidden: false
Установка свойства backgroundColor
Для сложного приложения событие ready-to-show может быть отправлено слишком поздно, из-за чего приложение будет казаться медленным. В этом случае рекомендуется отобразить окно сразу и использовать значение backgroundColor близкое к фоновому цвету вашего приложения:
const { BrowserWindow } = require('electron')
const win = new BrowserWindow({ backgroundColor: '#2e2c29' })
win.loadURL('https://github.com')
Обратите внимание, что даже для приложений, использующих событие ready-to-show, все равно рекомендуется установить backgroundColor, чтобы приложение чувствовалось более нативным.
Некоторые примеры допустимых значений backgroundColor включают:
const win = new BrowserWindow()
win.setBackgroundColor('hsl(230, 100%, 50%)')
win.setBackgroundColor('rgb(255, 145, 145)')
win.setBackgroundColor('#ff00a3')
win.setBackgroundColor('blueviolet')
Дополнительную информацию об этих типах цветов см. в допустимых параметрах в win.setBackgroundColor.
Родительские и дочерние окна
Используя опцию parent, можно создать дочерние окна:
const { BrowserWindow } = require('electron')
const top = new BrowserWindow()
const child = new BrowserWindow({ parent: top })
child.show()
top.show()
Окно child всегда будет отображаться поверх окна top.
Модальные окна
Модальное окно — это дочернее окно, которое отключает родительское окно. Чтобы создать модальное окно, необходимо установить опции parent и modal:
const { BrowserWindow } = require('electron')
const child = new BrowserWindow({ parent: top, modal: true, show: false })
child.loadURL('https://github.com')
child.once('ready-to-show', () => {
child.show()
})
Видимость страницы
API видимости страницы Page Visibility API работает следующим образом:
- На всех платформах состояние видимости отслеживает, скрыто/минимизировано ли окно или нет.
- Кроме того, на macOS состояние видимости также отслеживает состояние перекрытия окна. Если окно перекрыто (т.е. полностью закрыто) другим окном, состояние видимости будет
hidden. На других платформах состояние видимости будетhiddenтолько при минимизации или явном скрытии окна сwin.hide(). - Если окно
BrowserWindowсоздано сshow: false, начальное состояние видимости будетvisible, несмотря на то, что окно фактически скрыто. - Если
backgroundThrottlingотключено, состояние видимости останетсяvisibleдаже при минимизации, перекрытии или скрытии окна.
Рекомендуется приостанавливать дорогостоящие операции, когда состояние видимости hidden для минимизации энергопотребления.
Примечания к платформам
- На macOS модальные окна будут отображаться как листы, прикрепленные к родительскому окну.
- На macOS дочерние окна сохраняют относительное положение по отношению к родительскому окну при перемещении родительского окна, в то время как на Windows и Linux дочерние окна не перемещаются.
- В Linux тип модальных окон будет изменен на
dialog. - В Linux многие среды рабочего стола не поддерживают скрытие модального окна.
Класс: BrowserWindow
Создавайте и управляйте окнами браузера.
Процесс: Основной
BrowserWindow является EventEmitter.
Он создает новое окно BrowserWindow с нативными свойствами, как установлено в options.
new BrowserWindow([options])
При установке минимального или максимального размера окна с использованием minWidth/maxWidth/ minHeight/maxHeight, это ограничение только для пользователя. Это не предотвратит передачу размера, который не соответствует ограничениям, в setBounds/setSize или конструктор BrowserWindow.
Возможные значения и поведение параметра type зависят от платформы. Возможные значения:
- В Linux возможные типы
desktop,dock,toolbar,splash,notification. - В macOS возможные типы
desktop,textured,panel.- Тип
texturedдобавляет металлический градиентный вид (NSWindowStyleMaskTexturedBackground). - Тип
desktopпомещает окно на уровень окна фонового рабочего стола (kCGDesktopWindowLevel - 1). Обратите внимание, что окно рабочего стола не получит фокус, события клавиатуры или мыши, но вы можете использоватьglobalShortcutдля получения ввода. - Тип
panelпозволяет окну плавать поверх полноэкранных приложений, добавляя маску стиляNSWindowStyleMaskNonactivatingPanel, обычно используемую для NSPanel, во время выполнения. Также окно будет отображаться на всех пространствах (рабочих столах).
- Тип
- В Windows возможен тип
toolbar.
События экземпляра
Объекты, созданные с помощью new BrowserWindow, излучают следующие события:
Примечание: Некоторые события доступны только на определенных операционных системах и помечены как таковые.
Событие: 'page-title-updated'
Возвращает:
-
eventСобытие -
titleстрока -
explicitSetлогическое значение
Выпускается, когда документ изменил свой заголовок, вызов event.preventDefault() предотвратит изменение заголовка родного окна. explicitSet равно false, когда заголовок синтезируется из URL файла.
Событие: 'close'
Возвращает:
-
eventСобытие
Выпускается, когда окно собирается закрыться. Оно выпускается до событий beforeunload и unload DOM. Вызов 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 = handler и window.addEventListener('beforeunload', handler). Рекомендуется всегда явно устанавливать event.returnValue, а не только возвращать значение, так как первый работает более последовательно в Electron.
Событие: 'closed'
Выпускается при закрытии окна. После получения этого события вы должны удалить ссылку на окно и больше не использовать его.
Событие: 'session-end' Windows
Выпускается, когда сеанс окна собирается завершиться из-за принудительного завершения работы или перезагрузки компьютера или выхода из сеанса.
Событие: 'unresponsive'
Выпускается, когда веб-страница становится неотзывчивой.
Событие: 'responsive'
Выпускается, когда неотзывчивая веб-страница снова становится отзывчивой.
Событие: 'blur'
Выпускается, когда окно теряет фокус.
Событие: 'focus'
Выпускается, когда окно получает фокус.
Событие: 'show'
Выпускается при отображении окна.
Событие: 'hide'
Выпускается, когда окно скрыто.
Событие: 'ready-to-show'
Выпускается, когда веб-страница была отрисована (хотя и не отображается) и окно может быть отображено без визуального мерцания.
Обратите внимание, что использование этого события подразумевает, что рендерер будет считаться "видимым" и будет рисовать, даже если show равно false. Это событие никогда не будет выпущено, если вы используете paintWhenInitiallyHidden: false
Событие: 'maximize'
Выпускается, когда окно максимализировано.
Событие: 'unmaximize'
Выпускается, когда окно покидает состояние максимализации.
Событие: 'minimize'
Выпускается, когда окно минимизировано.
Событие: 'restore'
Выпускается, когда окно восстановлено из минимизированного состояния.
Событие: 'will-resize' macOS Windows
Возвращает:
-
eventСобытие -
newBoundsПрямоугольник - Размер, к которому окно изменяется. -
detailsОбъект-
edge(строка) - Край окна, перетаскиваемый для изменения размера. Может бытьbottom,left,right,top-left,top-right,bottom-leftилиbottom-right.
-
Выпускается перед изменением размера окна. Вызов event.preventDefault() предотвратит изменение размера окна.
Обратите внимание, что это событие выпускается только при ручном изменении размера окна. Изменение размера окна с использованием setBounds/setSize не вызовет это событие.
Возможные значения и поведение параметра edge зависят от платформы. Возможные значения:
- В Windows возможные значения
bottom,top,left,right,top-left,top-right,bottom-left,bottom-right. - В macOS возможные значения
bottomиright.- Значение
bottomиспользуется для обозначения вертикального изменения размера. - Значение
rightиспользуется для обозначения горизонтального изменения размера.
- Значение
Событие: 'resize'
Выпускается после изменения размера окна.
Событие: 'resized' macOS Windows
Выпускается один раз, когда окно закончит изменение размера.
Это обычно происходит, когда окно было изменено размера вручную. В macOS изменение размера окна с setBounds/setSize и установкой параметра animate в true также вызовет это событие после завершения изменения размера.
Событие: 'will-move' macOS Windows
Возвращает:
-
eventСобытие -
newBoundsПрямоугольник - Положение, в которое перемещается окно.
Выполняется перед перемещением окна. В Windows, вызов event.preventDefault() предотвратит перемещение окна.
Обратите внимание, что этот событие генерируется только при ручном перемещении окна. Перемещение окна с помощью setPosition/setBounds/center не сгенерирует это событие.
Событие: 'move'
Срабатывает при перемещении окна в новое положение.
Событие: 'moved' macOS Windows
Срабатывает один раз при перемещении окна в новое положение.
Примечание: В macOS это событие является алиасом move.
Событие: 'enter-full-screen'
Срабатывает, когда окно переходит в полноэкранный режим.
Событие: 'leave-full-screen'
Срабатывает, когда окно покидает полноэкранный режим.
Событие: 'enter-html-full-screen'
Срабатывает, когда окно переходит в полноэкранный режим, вызванный API HTML.
Событие: 'leave-html-full-screen'
Срабатывает, когда окно покидает полноэкранный режим, вызванный API HTML.
Событие: 'always-on-top-changed'
Возвращает:
-
eventСобытие -
isAlwaysOnTopboolean
Срабатывает, когда окну задано или снято свойство "всегда поверх" других окон.
Событие: 'app-command' Windows Linux
Возвращает:
-
eventСобытие -
commandстрока
Срабатывает при вызове команды приложения. Обычно связаны с медиа-клавишами клавиатуры или командами браузера, а также с кнопкой "Назад", встроенной в некоторые мыши в Windows.
Команды приводятся к нижнему регистру, подчеркивания заменяются дефисами, и префикс APPCOMMAND_ удаляется. Например, APPCOMMAND_BROWSER_BACKWARD генерирует browser-backward.
const { BrowserWindow } = require('electron')
const win = new BrowserWindow()
win.on('app-command', (e, cmd) => {
// Navigate the window back when the user hits their mouse back button
if (cmd === 'browser-backward' && win.webContents.canGoBack()) {
win.webContents.goBack()
}
})
Следующие команды приложения явно поддерживаются в Linux:
browser-backwardbrowser-forward
Событие: 'scroll-touch-begin' macOS
Срабатывает при начале фазы события прокрутки колесом.
Событие: 'scroll-touch-end' macOS
Срабатывает по окончании фазы события прокрутки колесом.
Событие: 'scroll-touch-edge' macOS
Срабатывает, когда фаза события прокрутки достигла края элемента.
Событие: 'swipe' macOS
Возвращает:
-
eventСобытие -
directionстрока
Срабатывает при свайпе тремя пальцами. Возможные направления: up, right, down, left.
Метод, лежащий в основе этого события, разработан для обработки свайпов трекпада в стиле старых macOS, где содержимое экрана не перемещается вместе со свайпом. Большинство трекпадов macOS больше не настроены на разрешение такого рода свайпов, поэтому для правильной генерации события необходимо установить в System Preferences > Trackpad > More Gestures параметр "Прокрутка между страницами" в значение "Прокрутка двумя или тремя пальцами".
Событие: 'rotate-gesture' macOS
Возвращает:
-
eventСобытие -
rotationЧисло с плавающей запятой
Срабатывает при жесте вращения трекпада. Непрерывно генерируется до завершения жеста вращения. Значение rotation в каждом событии — угол в градусах, на который повернуто с предыдущего события. Последнее событие при жесте вращения всегда имеет значение 0 . Противочасовой поворот — положительные значения, а по часовой стрелке — отрицательные.
Событие: 'sheet-begin' macOS
Срабатывает при открытии листа (sheet).
Событие: 'sheet-end' macOS
Срабатывает при закрытии листа (sheet).
Событие: 'new-window-for-tab' macOS
Срабатывает при нажатии на кнопку создания новой вкладки.
Событие: 'system-context-menu' Windows
Возвращает:
-
eventСобытие -
pointТочка - Координаты контекстного меню на экране
Срабатывает при вызове контекстного меню системы на окне. Обычно срабатывает при нажатии правой кнопкой мыши на неклиентскую область окна. Это область заголовка окна или любая область, объявленная как -webkit-app-region: drag в оконном фрейме без рамки.
Вызов event.preventDefault() предотвратит отображение меню.
Статические методы
Класс BrowserWindow содержит следующие статические методы:
BrowserWindow.getAllWindows()
Возвращает BrowserWindow[] - Массив всех открытых окон браузера.
BrowserWindow.getFocusedWindow()
Возвращает BrowserWindow | null - Окно, на котором сфокусирован курсор в приложении. В противном случае возвращает null.
BrowserWindow.fromWebContents(webContents)
-
webContentsWebContents
Возвращает BrowserWindow | null - Окно, владеющее данным webContents, или null, если содержимое не принадлежит окну.
BrowserWindow.fromBrowserView(browserView)
-
browserViewBrowserView
Возвращает BrowserWindow | null - Окно, владеющее данным browserView. Если данное представление не прикреплено к окну, возвращает null.
BrowserWindow.fromId(id)
-
idЦелое число
Возвращает BrowserWindow | null - Окно с заданным id.
Свойства экземпляров
У объектов, созданных с помощью new BrowserWindow, есть следующие свойства:
const { BrowserWindow } = require('electron')
// In this example `win` is our instance
const win = new BrowserWindow({ width: 800, height: 600 })
win.loadURL('https://github.com')
win.webContents Только для чтения
Объект WebContents, принадлежащий этому окну. Все события и операции, связанные с веб-страницей, выполняются через него.
См. webContents документацию для его методов и событий.
win.id Только для чтения
Свойство Integer, представляющее уникальный идентификатор окна. Каждый идентификатор уникален среди всех BrowserWindow экземпляров всего приложения Electron.
win.autoHideMenuBar
Свойство boolean, определяющее, следует ли автоматически скрывать строку меню окна. После установки, строка меню будет отображаться только при нажатии на единственную клавишу Alt.
Если строка меню уже отображается, установка этого свойства в true не скроет её мгновенно.
win.simpleFullScreen
Свойство boolean, определяющее, находится ли окно в режиме простого полноэкранного режима (до Lion).
win.fullScreen
Свойство boolean, определяющее, находится ли окно в полноэкранном режиме.
win.focusable Windows macOS
Свойство boolean, определяющее, может ли окно получить фокус.
win.visibleOnAllWorkspaces macOS Linux
Свойство boolean, определяющее, отображается ли окно на всех рабочих столах.
Примечание: Всегда возвращает false в Windows.
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 установщик является бесполезной операцией, хотя получатель возвращает true.
win.maximizable macOS Windows
Свойство boolean, определяющее, может ли пользователь вручную максимизировать окно.
В Linux установщик является бесполезной операцией, хотя получатель возвращает true.
win.fullScreenable
Свойство boolean, определяющее, переключает ли кнопка максимизации/увеличения масштаба окно в полноэкранный режим или максимизирует окно.
win.resizable
Свойство boolean, определяющее, может ли пользователь вручную изменять размер окна.
win.closable macOS Windows
Свойство boolean, определяющее, может ли пользователь вручную закрыть окно.
В Linux установщик является бесполезной операцией, хотя получатель возвращает true.
win.movable macOS Windows
Свойство boolean, определяющее, может ли пользователь перемещать окно.
В Linux установщик является бесполезной операцией, хотя получатель возвращает true.
win.excludedFromShownWindowsMenu macOS
Свойство boolean, определяющее, исключено ли окно из меню приложений «Окна». false по умолчанию.
const win = new BrowserWindow({ height: 600, width: 600 })
const template = [
{
role: 'windowmenu'
}
]
win.excludedFromShownWindowsMenu = true
const menu = Menu.buildFromTemplate(template)
Menu.setApplicationMenu(menu)
win.accessibleTitle
Свойство string, определяющее альтернативный заголовок, предоставленный только для инструментов доступности, таких как программы чтения с экрана. Эта строка не отображается пользователям напрямую.
Методы экземпляров
Объекты, созданные с помощью new BrowserWindow, имеют следующие методы экземпляров:
Примечание: Некоторые методы доступны только на определённых операционных системах и помечены как таковые.
win.destroy()
Вынужденное закрытие окна. События unload и beforeunload не будут отправлены для веб-страницы, и событие 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()
Минимизирует окно. На некоторых платформах минимизированное окно будет отображено в доке.
win.restore()
Восстанавливает окно из минимизированного состояния в его предыдущее состояние.
win.isMinimized()
Возвращает boolean — минимизировано ли окно.
win.setFullScreen(flag)
-
flagboolean
Устанавливает, должно ли окно быть в полноэкранном режиме.
win.isFullScreen()
Возвращает boolean — находится ли окно в полноэкранном режиме.
win.setSimpleFullScreen(flag) macOS
-
flagboolean
Переходит в или выходит из простого полноэкранного режима.
Простой полноэкранный режим эмулирует родное полноэкранное поведение, найденное в версиях macOS до Lion (10.7).
win.isSimpleFullScreen() macOS
Возвращает boolean — находится ли окно в простом (до Lion) полноэкранном режиме.
win.isNormal()
Возвращает boolean — находится ли окно в нормальном состоянии (не максимизировано, не минимизировано, не в полноэкранном режиме).
win.setAspectRatio(aspectRatio[, extraSize])
-
aspectRatioFloat — коэффициент пропорций, который необходимо поддерживать для некоторой части области содержимого. -
extraSizeРазмер (необязательно) macOS — дополнительный размер, который не нужно включать при поддержании коэффициента пропорций.
Это позволит окну поддерживать коэффициент пропорций. Дополнительный размер позволяет разработчику иметь пространство, заданное в пикселях, которое не включается в расчёты коэффициента пропорций. Этот API уже учитывает разницу между размером окна и размером его содержимого.
Рассмотрим обычное окно с видеопроигрывателем HD и соответствующими элементами управления. Возможно, есть 15 пикселей элементов управления слева, 25 пикселей элементов управления справа и 50 пикселей элементов управления под проигрывателем. Для поддержания коэффициента пропорций 16:9 (стандартный коэффициент пропорций для HD @1920x1080) внутри самого проигрывателя мы будем вызывать эту функцию с аргументами 16/9 и { width: 40, height: 50 }. Второй аргумент не заботится о том, где находятся дополнительные ширина и высота внутри области содержимого — только о том, что они существуют. Суммируйте любые дополнительные области ширины и высоты, которые у вас есть в области содержимого в целом.
Коэффициент пропорций не соблюдается при изменении размера окна программно с помощью API, таких как win.setSize.
win.setBackgroundColor(backgroundColor)
-
backgroundColorстрока — цвет в формате Hex, RGB, RGBA, HSL, HSLA или именованном формате цвета CSS. Альфа-канал является необязательным для типа hex.
Примеры допустимых значений backgroundColor:
- Hex
- #fff (сокращённый RGB)
- #ffff (сокращённый ARGB)
- #ffffff (RGB)
- #ffffffff (ARGB)
- RGB
- rgb(([\d]+),\s([\d]+),\s([\d]+))
- например rgb(255, 255, 255)
- rgb(([\d]+),\s([\d]+),\s([\d]+))
- RGBA
- rgba(([\d]+),\s([\d]+),\s([\d]+),\s*([\d.]+))
- например rgba(255, 255, 255, 1.0)
- rgba(([\d]+),\s([\d]+),\s([\d]+),\s*([\d.]+))
- HSL
- hsl((-?[\d.]+),\s([\d.]+)%,\s([\d.]+)%)
- например hsl(200, 20%, 50%)
- hsl((-?[\d.]+),\s([\d.]+)%,\s([\d.]+)%)
- HSLA
- hsla((-?[\d.]+),\s([\d.]+)%,\s([\d.]+)%,\s*([\d.]+))
- например hsla(200, 20%, 50%, 0.5)
- hsla((-?[\d.]+),\s([\d.]+)%,\s([\d.]+)%,\s*([\d.]+))
- Имя цвета
- Варианты перечислены в SkParseColor.cpp
- Аналогично ключевым словам CSS Color Module Level 3, но регистрозависимы.
- например
bluevioletилиred
- например
Устанавливает цвет фона окна. См. Установку 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])
-
boundsPartial<Прямоугольник> -
animateboolean (необязательно) macOS
Изменяет размер и перемещает окно в предоставленные границы. Любые не указанные свойства будут по умолчанию иметь свои текущие значения.
const { BrowserWindow } = require('electron')
const win = new BrowserWindow()
// 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())
win.getBounds()
Возвращает Прямоугольник — bounds окна в виде Object.
win.getBackgroundColor()
Возвращает string — получает цвет фона окна в формате Hex (#RRGGBB) .
См. Установку backgroundColor.
Примечание: значение альфа-канала не возвращается вместе с красным, зелёным и синим значениями.
win.setContentBounds(bounds[, animate])
-
boundsПрямоугольник -
animateboolean (необязательно) macOS
Изменяет размер и перемещает область клиента окна (например, веб-страницу) в предоставленные границы.
win.getContentBounds()
Возвращает Прямоугольник — bounds области клиента окна в виде Object.
win.getNormalBounds()
Возвращает Прямоугольник — содержит границы окна в нормальном состоянии.
Примечание: независимо от текущего состояния окна (максимизированное, минимизированное или в полноэкранном режиме) эта функция всегда возвращает положение и размер окна в нормальном состоянии. В нормальном состоянии функции getBounds и getNormalBounds возвращают один и тот же Прямоугольник.
win.setEnabled(enable)
-
enableboolean
Отключить или включить окно.
win.isEnabled()
Возвращает boolean — включено ли окно.
win.setSize(width, height[, animate])
-
widthЦелое число -
heightЦелое число -
animateboolean (необязательно) macOS
Изменяет размер окна до width и height. Если width или height ниже любых установленных минимальных размеров, окно будет привязано к своему минимальному размеру.
win.getSize()
Возвращает Integer[] — содержит ширину и высоту окна.
win.setContentSize(width, height[, animate])
-
widthЦелое число -
heightЦелое число -
animateлогическое значение (необязательно) macOS
Изменяет размер клиентской области окна (например, веб-страницы) до width и height.
win.getContentSize()
Возвращает Integer[] - Содержит ширину и высоту клиентской области окна.
win.setMinimumSize(width, height)
-
widthЦелое число -
heightЦелое число
Устанавливает минимальный размер окна до width и height.
win.getMinimumSize()
Возвращает Integer[] - Содержит минимальную ширину и высоту окна.
win.setMaximumSize(width, height)
-
widthЦелое число -
heightЦелое число
Устанавливает максимальный размер окна до width и height.
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логическое значение
Устанавливает, можно ли пользователю вручную закрыть окно. В Linux ничего не делает.
win.isClosable() macOS Windows
Возвращает boolean - Можно ли пользователю вручную закрыть окно.
В Linux всегда возвращает true.
win.setAlwaysOnTop(flag[, level][, relativeLevel])
-
flagлогическое значение -
levelстрока (необязательно) macOS Windows - Значения включаютnormal,floating,torn-off-menu,modal-panel,main-menu,status,pop-up-menu,screen-saver, и(Устарело). По умолчаниюdockfloatingприflagявляется истинным.levelсбрасывается доnormalпри ложном значении флага. Обратите внимание, что сfloatingпоstatusвключительно, окно размещается под панелью Dock на macOS и под строкой задач на Windows. Сpop-up-menuи выше оно отображается над панелью Dock на macOS и над строкой задач на Windows. Для получения дополнительной информации см. документацию macOS. -
relativeLevelЦелое число (необязательно) macOS - Число уровней выше для установки этого окна относительно заданногоlevel. По умолчанию0Обратите внимание, что Apple не рекомендует устанавливать уровни выше 1 надscreen-saver.
Устанавливает, что окно должно отображаться всегда поверх других окон. После установки этого флага окно по-прежнему является обычным окном, а не окном панели инструментов, которое нельзя сфокусировать.
win.isAlwaysOnTop()
Возвращает boolean - Отображается ли окно всегда поверх других окон.
win.moveAbove(mediaSourceId)
-
mediaSourceIdстрока - Идентификатор окна в формате идентификатора источника DesktopCapturer. Например, "window:1869:0".
Перемещает окно над окном-источником в порядке z-индекса. Если mediaSourceId не является окном или если окно не существует, этот метод возвращает ошибку.
win.moveTop()
Перемещает окно на самый верх (z-порядок) независимо от фокуса
win.center()
Перемещает окно в центр экрана.
win.setPosition(x, y[, animate])
-
xЦелое число -
yЦелое число -
animateлогическое значение (необязательно) macOS
Перемещает окно в x и y.
win.getPosition()
Возвращает Integer[] - Содержит текущее положение окна.
win.setTitle(title)
-
titleстрока
Изменяет заголовок нативного окна на title.
win.getTitle()
Возвращает string - Заголовок нативного окна.
Примечание: Заголовок веб-страницы может отличаться от заголовка нативного окна.
win.setSheetOffset(offsetY[, offsetX]) macOS
-
offsetYВещественное число -
offsetXВещественное число (необязательно)
Изменяет точку прикрепления листов на macOS. По умолчанию листы прикрепляются непосредственно под рамкой окна, но вы можете отобразить их под HTML-рендеренной панелью инструментов. Например:
const { BrowserWindow } = require('electron')
const win = new BrowserWindow()
const toolbarRect = document.getElementById('toolbar').getBoundingClientRect()
win.setSheetOffset(toolbarRect.height)
win.flashFrame(flag)
-
flagboolean
Запускает или останавливает мигание окна для привлечения внимания пользователя.
win.setSkipTaskbar(skip) macOS Windows
-
skipboolean
Заставляет окно не отображаться в панели задач.
win.setKiosk(flag)
-
flagboolean
Переключает режим киоска.
win.isKiosk()
Возвращает boolean — находится ли окно в режиме киоска.
win.isTabletMode() Windows
Возвращает boolean — находится ли окно в режиме планшета Windows 10.
Так как пользователи Windows 10 могут использовать свой ПК как планшет, приложения в этом режиме могут оптимизировать свой интерфейс для планшетов, например, увеличивая панель заголовка и скрывая кнопки панели заголовка.
Этот API возвращает, находится ли окно в режиме планшета, и событие resize может использоваться для прослушивания изменений в режиме планшета.
win.getMediaSourceId()
Возвращает string — идентификатор окна в формате идентификатора DesktopCapturerSource. Например, "window:1324:0".
Более точно формат window:id:other_id, где id — HWND в Windows, CGWindowID (uint64_t) в macOS и Window (unsigned long) в Linux. other_id используется для идентификации содержимого веб-страниц (вкладок) в пределах одного окна верхнего уровня.
win.getNativeWindowHandle()
Возвращает Buffer — платформозависимую дескриптор окна.
Тип дескриптора — HWND в Windows, NSView* в macOS и Window (unsigned long) в Linux.
win.hookWindowMessage(message, callback) Windows
-
messageЦелое число -
callbackФункция-
wParamлюбой —wParam, переданный в WndProc -
lParamлюбой —lParam, переданный в WndProc
-
Подключает обработчик сообщения окна. Функция callback вызывается при получении сообщения в WndProc.
win.isWindowMessageHooked(message) Windows
-
messageЦелое число
Возвращает boolean — true или false в зависимости от того, подключен ли обработчик сообщения.
win.unhookWindowMessage(message) Windows
-
messageЦелое число
Отключает обработчик сообщения окна.
win.unhookAllWindowMessages() Windows
Отключает все обработчики сообщений окна.
win.setRepresentedFilename(filename) macOS
-
filenameстрока
Устанавливает путь к файлу, который представляет окно, и значок файла будет отображаться в строке заголовка окна.
win.getRepresentedFilename() macOS
Возвращает string — путь к файлу, который представляет окно.
win.setDocumentEdited(edited) macOS
-
editedboolean
Указывает, был ли изменён документ окна, и значок в строке заголовка станет серым, если значение будет true.
win.isDocumentEdited() macOS
Возвращает boolean — был ли изменён документ окна.
win.focusOnWebView()
win.blurWebView()
win.capturePage([rect])
-
rectПрямоугольник (необязательно) — границы для захвата
Возвращает Promise<NativeImage> — разрешает NativeImage
Захватывает снимок страницы в пределах rect. Если rect опущен, будет захвачена вся видимая страница. Если страница не видна, rect может быть пустым.
win.loadURL(url[, options])
-
urlстрока
Возвращает Promise<void> — промис разрешится, когда страница закончит загрузку (см. did-finish-load), и отклонится, если страница не загрузится (см. did-fail-load).
Аналогично webContents.loadURL(url[, options]).
url может быть удалённым адресом (например, http://) или путём к локальному HTML-файлу, использующему протокол file://.
Для обеспечения правильного форматирования URL-адресов файлов рекомендуется использовать метод Node url.format:
const url = require('url').format({
protocol: 'file',
slashes: true,
pathname: require('path').join(__dirname, 'index.html')
})
win.loadURL(url)
Вы можете загрузить URL-адрес с помощью запроса POST с данными в формате URL-кодирования, выполнив следующие действия:
win.loadURL('http://localhost:8000/post', {
postData: [{
type: 'rawData',
bytes: Buffer.from('hello=world')
}],
extraHeaders: 'Content-Type: application/x-www-form-urlencoded'
})
win.loadFile(filePath[, options])
-
filePathстрока
Возвращает Promise<void> — промис разрешится, когда страница закончит загрузку (см. did-finish-load), и отклонится, если страница не загрузится (см. did-fail-load).
Аналогично webContents.loadFile, filePath должен быть путём к HTML-файлу относительно корня приложения. См. документацию по webContents для получения дополнительной информации.
win.reload()
Аналогично webContents.reload.
win.setMenu(menu) Linux Windows
-
menuМеню | null
Устанавливает menu в качестве строковой панели меню окна.
win.removeMenu() Linux Windows
Удаляет строковую панель меню окна.
win.setProgressBar(progress[, options])
-
progressDouble
Устанавливает значение прогресса в полосе прогресса. Допустимый диапазон [0, 1.0].
Удалить полосу прогресса, когда прогресс < 0; Переключиться на режим неопределенного прогресса, когда прогресс > 1.
В Linux поддерживается только среда рабочего стола Unity, вам необходимо указать имя файла *.desktop в поле desktopName в package.json. По умолчанию используется {app.name}.desktop.
В Windows можно передать режим. Допустимые значения none, normal, indeterminate, error, и paused. Если вы вызываете setProgressBar без установленного режима (но со значением в допустимом диапазоне), предполагается normal.
win.setOverlayIcon(overlay, description) Windows
-
overlayNativeImage | null - значок для отображения в правом нижнем углу значка значка панели задач. Если этот параметрnull, наложение очищается -
descriptionстрока - описание, которое будет предоставлено экранным чтецом системы доступности
Устанавливает наложение 16 x 16 пикселей на текущий значок панели задач, обычно используемое для передачи какого-либо статуса приложения или для пассивного уведомления пользователя.
win.setHasShadow(hasShadow)
-
hasShadowлогическое значение
Устанавливает, должен ли у окна быть отступ.
win.hasShadow()
Возвращает boolean - Имеет ли окно отступ.
win.setOpacity(opacity) Windows macOS
-
opacityчисло - от 0,0 (полностью прозрачное) до 1,0 (полностью непрозрачное)
Устанавливает непрозрачность окна. В Linux ничего не делает. Значения чисел вне границ ограничиваются диапазоном [0, 1].
win.getOpacity()
Возвращает number - от 0,0 (полностью прозрачное) до 1,0 (полностью непрозрачное). В Linux всегда возвращает 1.
win.setShape(rects) Windows Linux Экспериментальная
-
rectsПрямоугольник[] - Устанавливает форму окна. Передача пустого списка возвращает окну прямоугольную форму.
Установка формы окна определяет область внутри окна, где система разрешает рисование и взаимодействие пользователя. За пределами заданной области не будут отрисованы никакие пиксели, и не будут зарегистрированы никакие события мыши. События мыши за пределами области не будут получены этим окном, а будут переданы тому, что находится за окном.
win.setThumbarButtons(buttons) Windows
-
buttonsThumbarButton[]
Возвращает boolean - Были ли успешно добавлены кнопки
Добавляет панель инструментов миниатюр с указанным набором кнопок к миниатюре изображения окна в макете кнопки панели задач. Возвращает объект boolean, указывающий, была ли миниатюра добавлена успешно.
Количество кнопок на панели инструментов миниатюр не должно превышать 7 из-за ограниченного пространства. После настройки панели инструментов миниатюр панель инструментов удалить нельзя из-за ограничений платформы. Но вы можете вызвать API с пустым массивом, чтобы очистить кнопки.
buttons — массив объектов Button:
-
ButtonОбъект-
iconNativeImage - значок, отображаемый на панели инструментов миниатюр. -
clickФункция -
tooltipстрока (необязательно) - текст подсказки кнопки. -
flagsмассив строк (необязательно) - Управление определенными состояниями и поведением кнопки. По умолчанию['enabled'].
-
flags — массив, который может содержать следующие string:
-
enabled- Кнопка активна и доступна пользователю. -
disabled- Кнопка отключена. Она присутствует, но имеет визуальное состояние, указывающее, что она не отреагирует на действия пользователя. -
dismissonclick- При нажатии кнопки окно миниатюры закрывается немедленно. -
nobackground- Не рисовать границу кнопки, использовать только изображение. -
hidden- Кнопка не отображается пользователю. -
noninteractive- Кнопка включена, но не интерактивна; состояние нажатия кнопки не отображается. Это значение предназначено для случаев, когда кнопка используется в уведомлении.
win.setThumbnailClip(region) Windows
-
regionПрямоугольник - область окна
Устанавливает область окна, которая будет отображаться как изображение миниатюры при наведении указателя мыши на окно в панели задач. Вы можете сбросить миниатюру до всего окна, указав пустую область: { x: 0, y: 0, width: 0, height: 0 }.
win.setThumbnailToolTip(toolTip) Windows
-
toolTipстрока
Устанавливает подсказку, отображаемую при наведении указателя мыши на миниатюру окна в панели задач.
win.setAppDetails(options) Windows
Устанавливает свойства для кнопки окна на панели задач.
Примечание: relaunchCommand и relaunchDisplayName должны быть установлены вместе. Если один из этих параметров не установлен, то ни один из них не будет использован.
win.showDefinitionForSelection() macOS
То же, что и webContents.showDefinitionForSelection().
win.setIcon(icon) Windows Linux
-
iconNativeImage | строка
Изменяет значок окна.
win.setWindowButtonVisibility(visible) macOS
-
visibleлогическое значение
Устанавливает, должны ли быть видны кнопки индикатора состояния окна.
win.setAutoHideMenuBar(hide) Windows Linux
-
hideboolean
Устанавливает, должен ли автоматически скрываться оконная строка меню. После установки оконная строка меню будет отображаться только при нажатии на единственную клавишу Alt.
Если оконная строка меню уже отображается, вызов setAutoHideMenuBar(true) немедленно её не скроет.
win.isMenuBarAutoHide() Windows Linux
Возвращает boolean — автоматически ли скрывается строка меню.
win.setMenuBarVisibility(visible) Windows Linux
-
visibleboolean
Устанавливает, должна ли быть видимой оконная строка меню. Если оконная строка меню имеет режим автоскрытия, пользователи могут всё равно вызвать её, нажав на единственную клавишу Alt.
win.isMenuBarVisible() Windows Linux
Возвращает boolean — видима ли оконная строка меню.
win.setVisibleOnAllWorkspaces(visible[, options]) macOS Linux
-
visibleboolean
Устанавливает, должно ли быть окно видимым на всех рабочих столах.
Примечание: Этот API ничего не делает в Windows.
win.isVisibleOnAllWorkspaces() macOS Linux
Возвращает boolean — видимо ли окно на всех рабочих столах.
Примечание: Этот API всегда возвращает false в Windows.
win.setIgnoreMouseEvents(ignore[, options])
-
ignoreboolean
Заставляет окно игнорировать все события мыши.
Все события мыши, произошедшие в этом окне, будут переданы окну, расположенному ниже этого окна, но если это окно имеет фокус, оно всё равно будет получать события клавиатуры.
win.setContentProtection(enable) macOS Windows
-
enableboolean
Предотвращает захват содержимого окна другими приложениями.
В macOS устанавливает sharingType окна NSWindow в NSWindowSharingNone. В Windows вызывает SetWindowDisplayAffinity с WDA_EXCLUDEFROMCAPTURE. Для Windows 10 версии 2004 и выше окно будет полностью удалено из захвата; более старые версии Windows ведут себя так, как будто применяется WDA_MONITOR — захватывается чёрное окно.
win.setFocusable(focusable) macOS Windows
-
focusableboolean
Изменяет возможность получения фокуса окном.
В macOS фокус от окна не снимается.
win.isFocusable() macOS Windows
Возвращает возможность получения фокуса окном.
win.setParentWindow(parent)
-
parentBrowserWindow | null
Устанавливает parent в качестве родительского окна текущего окна. Передача null превратит текущее окно в окно верхнего уровня.
win.getParentWindow()
Возвращает BrowserWindow | null — родительское окно или null в случае отсутствия родительского окна.
win.getChildWindows()
Возвращает BrowserWindow[] — все дочерние окна.
win.setAutoHideCursor(autoHide) macOS
-
autoHideboolean
Управляет скрытием курсора при вводе.
win.selectPreviousTab() macOS
Выбирает предыдущую вкладку, когда включены собственные вкладки и в окне есть другие вкладки.
win.selectNextTab() macOS
Выбирает следующую вкладку, когда включены собственные вкладки и в окне есть другие вкладки.
win.mergeAllWindows() macOS
Объединяет все окна в одно окно с несколькими вкладками, когда включены собственные вкладки и открыто более одного окна.
win.moveTabToNewWindow() macOS
Перемещает текущую вкладку в новое окно, если включены собственные вкладки и в текущем окне более одной вкладки.
win.toggleTabBar() macOS
Переключает видимость панели вкладок, если включены собственные вкладки и в текущем окне только одна вкладка.
win.addTabbedWindow(browserWindow) macOS
-
browserWindowBrowserWindow
Добавляет окно в качестве вкладки в это окно после вкладки для экземпляра окна.
win.setVibrancy(type) macOS
-
typestring | null - Может бытьappearance-based,light,dark,titlebar,selection,menu,popover,sidebar,medium-light,ultra-dark,header,sheet,window,hud,fullscreen-ui,tooltip,content,under-window, илиunder-page. См. документацию macOS для получения дополнительной информации.
Добавляет эффект мерцания к окну браузера. Передача null или пустой строки удалит эффект мерцания из окна.
Обратите внимание, что appearance-based, light, dark, medium-light, и ultra-dark устарели и будут удалены в будущей версии macOS.
win.setTrafficLightPosition(position) macOS
-
positionТочка
Устанавливает пользовательское положение кнопок светофора в окне без рамки.
win.getTrafficLightPosition() macOS
Возвращает Point — пользовательское положение кнопок светофора в окне без рамки.
win.setTouchBar(touchBar) macOS
-
touchBarTouchBar | null
Устанавливает макет TouchBar для текущего окна. Указание null или undefined очищает строку Touch Bar. Этот метод работает только если у устройства есть Touch Bar и оно работает под macOS 10.12.1+.
Примечание: API TouchBar в настоящее время находится в стадии разработки и может быть изменён или удалён в будущих выпусках Electron.
win.setBrowserView(browserView) Экспериментально
-
browserViewBrowserView | null - ПрикрепляетbrowserViewкwin. Если другиеBrowserViewприкреплены, они будут удалены из этого окна.
win.getBrowserView() Экспериментально
Возвращает BrowserView | null - BrowserView прикреплённое к win. Возвращает null если оно не прикреплено. Выбрасывает ошибку, если несколько BrowserView прикреплены.
win.addBrowserView(browserView) Экспериментально
-
browserViewBrowserView
Заменяющий API для setBrowserView, поддерживающий работу с несколькими BrowserView.
win.removeBrowserView(browserView) Экспериментально
-
browserViewBrowserView
win.setTopBrowserView(browserView) Экспериментально
-
browserViewBrowserView
Выводит browserView над другими BrowserView прикреплёнными к win. Выбрасывает ошибку, если browserView не прикреплено к win.
win.getBrowserViews() Экспериментально
Возвращает BrowserView[] - массив всех BrowserView, которые были прикреплены с помощью addBrowserView или setBrowserView.
Примечание: API BrowserView в настоящее время находится в стадии разработки и может быть изменён или удалён в будущих выпусках Electron.
win.setTitleBarOverlay(options) Windows
В окне, где наложение элементов управления окном уже включено, этот метод обновляет стиль наложения строки заголовка.
© GitHub Inc.
Licensed under the MIT license.
https://www.electronjs.org/docs/latest/api/browser-window