app
Контролируйте жизненный цикл Вашего приложения.
Процесс: Главный
Этот пример показывает, как закрыть приложение, когда последнее окно будет закрыто:
const { app } = require('electron')
app.on('window-all-closed', () => {
app.quit()
})
События
Объект app
имеет следующие события:
Событие: 'will-finish-launching'
Происходит, когда приложение заканчивает основной запуск. На Windows и Linux событие will-finish-launching
подобно событию ready
; на macOS это событие представляет собой уведомление applicationWillFinishLaunching
объекта NSApplication
.
В большинстве случаев, Вы должны выполнять всё в обработчике события ready
.
Событие: 'ready'
Возвращает:
- Событие типа
event
launchInfo
Record<string, any> | NotificationResponse macOS
Происходит единожды при завершении инициализации Electron. В macOS, launchInfo
содержит userInfo
о NSUserNotification
или информацию из UNNotificationResponse
которая использовалась для открытия приложения, если оно было запущено из центра уведомлений (Notification Center). Вы также можете вызвать app.isReady()
для проверки того, что событие уже произошло и app.whenReady()
чтобы получить Promise, который выполнится, когда Electron будет инициализирован.
Note: The ready
event is only fired after the main process has finished running the first tick of the event loop. If an Electron API needs to be called before the ready
event, ensure that it is called synchronously in the top-level context of the main process.
Событие: 'window-all-closed'
Происходит при закрытии всех окон.
Если Вы не подпишитесь на это событие, и все окна будут закрыты, поведением по умолчанию является выход из приложения; Однако, если Вы подпишитесь, то Вы определяете, будет ли приложение закрыто или нет. Если пользователь нажал Cmd + Q
или разработчик вызвал app.quit()
, Electron сначала попытается закрыть все окна, а затем происходит событие will-quit
, и в этом случае событие window-all-closed
не будет происходить.
Событие: 'before-quit'
Возвращает:
- Событие типа
event
Происходит до того, как приложение начнет закрывать свои окна. Вызов event.preventDefault()
предотвратит поведение по умолчанию, которое приводит к прекращению работы приложения.
При мечание: Если выход приложения был инициирован autoUpdater.quitAndInstall()
, тогда before-quit
происходит после того, как происходит событие close
на всех окнах и закрывает их.
Примечание: На Windows это событие не произойдет, если приложение закрылось из-за выключения/перезагрузки системы или выхода пользователя из системы.
Событие: 'will-quit'
Возвращает:
- Событие типа
event
Возникает, когда все окна будут закрыты и приложение завершит работу. Вызов event.preventDefault()
предотвратит поведение по умолчанию, которое приводит к прекращению работы приложения.
Смотрите описание события window-all-closed
для различий между событиями will-quit
и window-all-closed
.
Примечание: На Windows это событие не произойдет, если приложение закрылось из-за выключения/перезагрузки системы или выхода пользователя из системы.
Событие: 'quit'
Возвращает:
- Событие типа
event
exitCode
Integer
Происходит при выходе из приложения.
Примечание: На Windows это событие не произойдет, если приложение закрылось из-за выключения/перезагрузки системы или выхода пользователя из системы.
Событие: 'open-file' macOS
Возвращает:
- Событие типа
event
path
string
Происходит, когда пользователь хочет открыть файл. Событие open-file
обычно происходит, когда приложение уже открыто и ОС хочет переиспользовать приложение, чтобы открыть файл. open-file
также происходит, когда файл уже находится на Dock панели, но приложение еще не запущено. Убедитесь, что обработчик события open-file
в самом начале запуска Вашего приложения обрабатывает этот случай (даже прежде, чем происходит событие ready
).
Вы должны вызвать event.preventDefault()
, если хотите обработать это событие.
На Windows Вам необходимо распарсить process.argv
(в основном процессе), чтобы получить путь к файлу.
Событие: 'open-url' macOS
Возвращает:
- Событие типа
event
url
string
Происходит, когда пользователь хочет открыть URL-адрес из приложения. Файл Вашего приложения Info.plist
должнен определять схему URL в ключе CFBundleURLTypes
и установить NSPrincipalClass
в AtomApplication
.
As with the open-file
event, be sure to register a listener for the open-url
event early in your application startup to detect if the application is being opened to handle a URL. If you register the listener in response to a ready
event, you'll miss URLs that trigger the launch of your application.
Событие: 'activate' macOS
Возвращает:
- Событие типа
event
hasVisibleWindows
boolean
Происходит при активации приложения. Различные действия могут запускать это событие, например, запуск приложения в первый раз, попытка перезапустить приложение, когда оно уже запущено, или клик на иконку приложения на панели dock или панели задач.
Событие: 'did-become-active' macOS
Возвращает:
- Событие типа
event
Emitted when the application becomes active. This differs from the activate
event in that did-become-active
is emitted every time the app becomes active, not only when Dock icon is clicked or application is re-launched. It is also emitted when a user switches to the app via the macOS App Switcher.
Event: 'did-resign-active' macOS
Возвращает:
- Событие типа
event
Emitted when the app is no longer active and doesn’t have focus. This can be triggered, for example, by clicking on another application or by using the macOS App Switcher to switch to another application.
Event: 'continue-activity' macOS
Возвращает:
- Событие типа
event
type
string - A string identifying the activity. Maps toNSUserActivity.activityType
.userInfo
unknown - содержит специфическое для приложения состояние, сохраненное на другом устройстве.- Объект
details
webpageURL
string (optional) - A string identifying the URL of the webpage accessed by the activity on another device, if available.
Emitted during Handoff when an activity from a different device wants to be resumed. Если вы хотите обработать это событие следует вызвать event.preventDefault()
.
Активность пользователя может быть продолжена только в приложении, которое имеет тот же ID команды разработчика, что и исходное приложение, и поддерживает тип активности. Поддерживаемые типы активности, указаны в Info.plist
приложения под ключом NSUserActivityTypes
.
Event: 'will-continue-activity' macOS
Возвращает:
- Событие типа
event
type
string - A string identifying the activity. Maps toNSUserActivity.activityType
.
Emitted during Handoff before an activity from a different device wants to be resumed. Если вы хотите обработать это событие следует вызвать event.preventDefault()
.
Event: 'continue-activity-error' macOS
Возвращает:
- Событие типа
event
type
string - A string identifying the activity. Maps toNSUserActivity.activityType
.error
string - A string with the error's localized description.
Emitted during Handoff when an activity from a different device fails to be resumed.
Event: 'activity-was-continued' macOS
Возвращает:
- Событие типа
event
type
string - A string identifying the activity. Maps toNSUserActivity.activityType
.userInfo
unknown - содержит специфичное, для приложения, состояние, сохраненное в хранилище по активности.
Emitted during Handoff after an activity from this device was successfully resumed on another one.
Event: 'update-activity-state' macOS
Возвращает:
- Событие типа
event
type
string - A string identifying the activity. Maps toNSUserActivity.activityType
.userInfo
unknown - содержит специфичное, для приложения, состояние, сохраненное в хранилище по активности.
Emitted when Handoff is about to be resumed on another device. Если Вы хотите обновить состояние, которое будет передано, Вам необходимо вызвать event.preventDefault()
немедленно, собрать новый словарь userInfo
и вызвать app.updateCurrentActivity()
своевременно. Иначе, операция завершится ошибкой и будет вызвано continue-activity-error
.
Событие: 'new-window-for-tab' macOS
Возвращает:
- Событие типа
event
Возникает при нажатии пользователем кнопки новой вкладки macOS. Кнопка новой вкладки отобразится только если текущий BrowserWindow
имеет tabbingIdentifier
Событие: 'browser-window-blur'
Возвращает:
- Событие типа
event
window
BrowserWindow
Emitted when a browserWindow gets blurred.
Событие: 'browser-window-focus'
Возвращает:
- Событие типа
event
window
BrowserWindow
Emitted when a browserWindow gets focused.
Событие: 'browser-window-created'
Возвращает:
- Событие типа
event
window
BrowserWindow
Emitted when a new browserWindow is created.
Событие: 'web-contents-created'
Возвращает:
- Событие типа
event
webContents
WebContents
Emitted when a new webContents is created.
Событие: 'certificate-error'
Возвращает:
- Событие типа
event
webContents
WebContentsurl
stringerror
string - The error codecertificate
Certificatecallback
FunctionisTrusted
boolean - Whether to consider the certificate as trusted
isMainFrame
boolean
Возникает, когда не удалось проверить certificate
для url
, чтобы доверять сертификату, вы должны предотвратить поведение по умолчанию с event.preventDefault()
и вызвать callback(true)
.
const { app } = require('electron')
app.on('certificate-error', (event, webContents, url, error, certificate, callback) => {
if (url === 'https://github.com') {
// Сверка логики.
event.preventDefault()
callback(true)
} else {
callback(false)
}
})
Событие: 'select-client-certificate'
Возвращает:
- Событие типа
event
webContents
WebContentsurl
URLcertificateList
Certificate[]callback
Functioncertificate
Certificate (optional)
Возникает при запросе сертификата клиента.
url
соответствует записи навигации, запрашивающей сертификат клиента и callback
можно вызвать с записью, отфильтрованной из списка. event.preventDefault()
предотвращает приложению использование первого сертификата из хранилища.
const { app } = require('electron')
app.on('select-client-certificate', (event, webContents, url, list, callback) => {
event.preventDefault()
callback(list[0])
})
Событие: 'login'
Возвращает:
- Событие типа
event
webContents
WebContents (optional)authenticationResponseDetails
Objecturl
URLpid
number
authInfo
ObjectisProxy
booleanscheme
stringhost
stringport
Integerrealm
string
callback
Functionusername
string (optional)password
string (optional)
Emitted when webContents
or Utility process wants to do basic auth.
Поведение по умолчанию - отмена всех аутентификаций. Чтобы переопределить это, Вы должны предотвратить поведение по умолчанию с помощью event.preventDefault()
и вызвать callback(username, password)
с учетными данными.
const { app } = require('electron')
app.on('login', (event, webContents, details, authInfo, callback) => {
event.preventDefault()
callback('username', 'secret')
})
Если calllback
вызывается без имени пользователя или пароля, запрос аутентификации будет отменен и ошибка аутентификации будет возвращена на страницу.
Событие: 'gpu-info-update'
Выдается при каждом обновлении информации о GPU.
Event: 'render-process-gone'
Возвращает:
- Событие типа
event
webContents
WebContentsdetails
RenderProcessGoneDetails
Emitted when the renderer process unexpectedly disappears. This is normally because it was crashed or killed.
Событие 'child-process-gone'
Возвращает:
- Событие типа
event
- Объект
details
type
string - Тип процесса. Одно из следующих значений:Utility
Zygote
Sandbox helper
GPU
Pepper Plugin
Pepper Plugin Broker
Unknown
reason
string - Причина исчезновения дочернего процесса. Возможные значения:clean-exit
- Process exited with an exit code of zeroabnormal-exit
- Process exited with a non-zero exit codekilled
- Process was sent a SIGTERM or otherwise killed externallycrashed
- Process crashedoom
- Process ran out of memorylaunch-failed
- Process never successfully launchedintegrity-failure
- Windows code integrity checks failed
exitCode
number - The exit code for the process (e.g. status from waitpid if on POSIX, from GetExitCodeProcess on Windows).serviceName
string (optional) - The non-localized name of the process.name
string (опционально) - Название процесса. Например:Audio Service
,Content Decryption Module Service
,Network Service
,Video Capture
и т.д.
Emitted when the child process unexpectedly disappears. This is normally because it was crashed or killed. It does not include renderer processes.