electron 点击关闭按钮强制关闭所有窗口
时间: 2023-06-28 12:03:56 浏览: 268
在 Electron 中,可以监听主窗口的 `beforeunload` 事件,来检测是否关闭了所有窗口,并在此事件中强制关闭所有窗口。以下是一个示例代码:
```javascript
const { app, BrowserWindow } = require('electron')
let mainWindow
let childWindows = []
function createMainWindow() {
mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true
}
})
mainWindow.loadFile('index.html')
mainWindow.on('closed', () => {
mainWindow = null
})
mainWindow.on('beforeunload', (event) => {
if (childWindows.length > 0) {
event.preventDefault()
childWindows.forEach(child => child.destroy())
childWindows = []
mainWindow.destroy()
}
})
}
function createChildWindow() {
const childWindow = new BrowserWindow({
width: 400,
height: 300,
parent: mainWindow,
webPreferences: {
nodeIntegration: true
}
})
childWindow.loadFile('child.html')
childWindow.on('closed', () => {
childWindows.splice(childWindows.indexOf(childWindow), 1)
})
childWindows.push(childWindow)
}
app.on('ready', () => {
createMainWindow()
createChildWindow()
})
app.on('window-all-closed', () => {
app.quit()
})
```
在此示例中,我们创建了一个主窗口和一个子窗口,并在主窗口的 `beforeunload` 事件中检查了子窗口的数量。如果子窗口的数量大于 0,则取消关闭事件并销毁所有子窗口和主窗口。如果子窗口的数量为 0,则不需要执行任何操作,因为主窗口将会正常关闭。
阅读全文