Electron 窗口相关事件监听
browser-window-created 事件
在 Electron 应用开发中,我们经常需要监听窗口的创建事件,以便在窗口创建时进行一些初始化配置。browser-window-created
事件就是用来监听窗口创建的。
当一个新的BrowserWindow
实例被创建时,会触发browser-window-created
事件。我们可以通过监听这个事件来获取到新创建的窗口实例,并对其进行一些配置。
示例代码
const { app, BrowserWindow } = require('electron')
app.on('browser-window-created', (event, window) => {
// 在这里可以对新创建的窗口进行一些初始化配置
window.setTitle('My App')
window.loadURL('https://example.com')
})
在上面的代码中,我们通过`app.on('browser-window-created', ...)`来监听窗口创建事件。当事件触发时,会传入两个参数:`event`和`window`。其中`window`就是新创建的`BrowserWindow`实例,我们可以对其进行一些配置,比如设置窗口标题、加载页面等。
## browser-window-focus/blur 事件
在 Electron 应用中,我们有时需要根据窗口的焦点状态来进行一些操作,比如当窗口失去焦点时暂停某些任务,当窗口获得焦点时恢复任务。这时就可以使用`browser-window-focus`和`browser-window-blur`事件来监听窗口的焦点变化。
`browser-window-focus`事件在窗口获得焦点时触发,而`browser-window-blur`事件在窗口失去焦点时触发。我们可以通过监听这两个事件来实现窗口焦点管理和状态切换。
示例代码
```javascript
const { BrowserWindow } = require('electron');
const win = new BrowserWindow();
win.on('focus', () => {
console.log('窗口获得焦点');
// 在这里可以进行一些操作,比如恢复任务
});
win.on('blur', () => {
console.log('窗口失去焦点');
// 在这里可以进行一些操作,比如暂停任务
});
在上面的代码中,我们通过win.on('focus', ...)
和win.on('blur', ...)
来分别监听窗口的获得焦点和失去焦点事件。当事件触发时,可以在回调函数中进行一些操作,比如恢复或暂停任务。
window-all-closed 事件
在 Electron 应用中,当所有窗口都被关闭时,应用程序通常应该退出。但是在某些平台(如 macOS)上,应用程序和它们的菜单栏会一直处于活动状态,直到用户通过 Cmd + Q 显式退出。
为了处理这种平台差异,Electron 提供了window-all-closed
事件。当应用程序的所有窗口都已关闭时,会触发该事件。我们可以监听这个事件,并根据不同平台进行相应的处理。
示例代码
const { app } = require('electron');
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
// 在 macOS 上,除非用户通过 Cmd + Q 显式退出,否则应用程序和它们的菜单栏会一直处于活动状态
app.quit();
}
});