app
app模块是为了控制整个应用的生命周期而设计的。
事件列表
- will-finish-launching
当应用程序完成基础的启动的时候被触发。
需要说明的是,在window和Linux中,will-finish-launching
事件与ready
事件是相同的;在macOS中,这个事件相当于NSApplication
中的applicationWillFinishLaunching
提示。这里可以为open-file
和open-url
设置监听器,并启动崩溃报告和自动更新。
在大多数的情况下,只在ready
事件处理器中完成所有的业务。 - ready
当Electron完成初始化时触发 - window-all-closed
当所有的窗口都被关闭时触发。如果开发者调用了app.quit()
,Electron将会先尝试关闭所有的窗口再触发will-quit()
事件 will-quit
当所有的窗口已经被关闭,应用即将推出时触发。
这里如果调用event.preventDefault将会阻止终止应用程序的默认行为。before-quit
应用程序开始关闭它的窗口的时候被触发。这里如果调用event.preventDefault()
将会阻止终止应用程序的默认行为。quit
应用程序正在推出时触发。open-file(macOS)
当用户想要在应用中打开一个文件的时候触发。open-file事件常常用在应用已经打开并且系统想要再次使用应用打开文件时被触发。open-file 也会在一个文件被拖入 dock 且应用还没有运行的时候被触发。open-url(macOS)
当用户想要在应用中打开一个url时被触发。active(macOS)
应用被激活时触发,常用于点击应用图标的时候。browser-window-blur
当一个BrowserWindow失去焦点的时候触发。browser-window-focus
当一个BrowserWindow获得焦点的时候被触发。browser-window-created
当一个BrowserWindow被创建的时候触发。certificate-error
当对url验证certificate证书失败的时候触发,如果需要信任这个证书,需组织默认行为event.preventDefault()并且调用callback(true)。
session.on('certificate-error', function(event, webContents, url, error, certificate, callback) {
if (url == "https://github.com") {
// 验证逻辑。
event.preventDefault();
callback(true);
} else {
callback(false);
}
});
- login
当webContents要进行一次HTTP登录验证时被触发。
默认情况下,electron会取消所有的验证行为,如果需要重写这个行为,需event.preventdefault()并且用callback(‘username’,’secret’)来验证。
app.on('login', function(event, webContents, request, authInfo, callback) {
event.preventDefault();
callback('username', 'secret');
})
- gpu-process-crashed
当GPU进程崩溃是触发。
方法列表
- app.quit()
- app.hide()(macOS)
隐藏所有的应用窗口,不是最小化. - app.show()(macOS)
隐藏后重新显示所有的窗口,不会自动选中他们。 - app.exit(exitCode)
- app.getAppPath()
- app.makeSingleInstance(callback)
这个方法可以让你的应用在同一时刻最多只会有一个实例。可以利用这个接口保证只有一个实例正常运行,其余的实例全部会被终止退出。
如果多个实例同时在运行,那么第一个被运行的实例中callback会以callback(argv,workgDirectory)
其余的实例会被终止。argv
是一个包含了这个实例的命令行参数列表的数组,workgDirectory
是这个实例目前的运行目录。
var myWindow = null;
var shouldQuit = app.makeSingleInstance(function(commandLine, workingDirectory) {
// 当另一个实例运行的时候,这里将会被调用,我们需要激活应用的窗口
if (myWindow) {
if (myWindow.isMinimized()) myWindow.restore();
myWindow.focus();
}
return true;
});
// 这个实例是多余的实例,需要退出
if (shouldQuit) {
app.quit();
return;
}
// 创建窗口、继续加载应用、应用逻辑等……
app.on('ready', function() {
});