记录一下: 关闭桌面应用,在electron中可以使用app.quit()方法,那么它会触发哪些事件呢:
//background.js
const { app, BrowserWindow, ipcMain } = require("electron");
ipcMain.on("topIcon", (event, args) => {
const webContent = event.sender;
const win = BrowserWindow.fromWebContents(webContent);
switch (args.type) {
case "close":
app.quit();// 关闭应用程序
break;
case "minus":
win.minimize();
break;
case "plus":
if (win.isMaximized()) {
win.restore();
} else {
win.maximize();
}
break;
default:
break;
}
});
查询electron文档,调用quit会触发
before-quit和will-quit, 不会触发window-all-closed www.electronjs.org/zh/docs/lat…
app.on("before-quit", (event) => {
console.log("触发了before-quit");
// event.preventDefault()
});
app.on("window-all-closed", () => {
console.log("触发了window-all-closed");
if (process.platform !== "darwin") {
app.quit();
}
});
app.on("will-quit", () => {
console.log("触发了will-quit");
});
关闭之后,window-all-closed事件不会被触发。
如果我们要阻止应用关闭,可以在before-quit或者will-quit调event.preventDefault()阻止程序关闭
app.on("before-quit", (event) => {
console.log("触发了before-quit");
event.preventDefault()
});