(五)app.quit会触发哪些事件

271 阅读1分钟

记录一下: 关闭桌面应用,在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-quitwill-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事件不会被触发。

image.png

如果我们要阻止应用关闭,可以在before-quit或者will-quit调event.preventDefault()阻止程序关闭

app.on("before-quit", (event) => {
  console.log("触发了before-quit");
  event.preventDefault()
});