跳到主要内容

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();
}
});