首页 > 解决方案 > 我需要使用 app.quit() 关闭所有窗口,但它不起作用,因为某些窗口被隐藏了

问题描述

我有一个简单的应用程序,它只有两个窗口,它们从不同时出现,但一直在工作,只是其中一个被隐藏了。我一直在尝试使用该app.quit()方法关闭它们,但它不起作用,我关闭的窗口停止运行,但终端中的进程将继续,因为另一个窗口正在运行。我该如何解决这个问题?
这是代码

const app = electron.app
const { ipcMain } = require('electron')
var path = require('path')

const BrowserWindow = electron.BrowserWindow

//when app ready it will create the window
app.on('ready', function () {
    //create the first window
    let loginWindow = new BrowserWindow({
        [...]
        
    webPreferences: {
            preload: path.join(__dirname, 'preload.js'),
            nodeIntegration: true,
            enableRemoteModule: true
        }
    })

    loginWindow.once('ready-to-show', function () {
        loginWindow.show()   
    })

    //create the forgotten password window
    let forgotPasswordWindow = new BrowserWindow({
       [...]
        
        webPreferences: {
            preload: path.join(__dirname, 'preload.js'),
            nodeIntegration: true,
            enableRemoteModule: true
        }
    })
    
    forgotPasswordWindow.once('ready-to-show', function () {
        forgotPasswordWindow.hide()
    })

    ipcMain.on('forgotpassword-from-login', function () {
        forgotPasswordWindow.show(loginWindow.hide())
    })
    
    ipcMain.on('login-from-forgotpassword', function () {
        forgotPasswordWindow.hide(loginWindow.show())
    })

});

app.on('window-all-closed', () => {
    if (forgotPasswordWindow.closed === true && loginWindow.show === false) {
        app.quit()
    }
    else if (loginWindow.closed === true && forgotPasswordWindow.show === false) {
        app.quit()
    }
})

最后的一段代码只是我的尝试,考虑到我是一个完全的初学者。
已经感谢您的任何回答!

标签: javascriptelectron

解决方案


好的,感谢Halmon的回答,我得到了简单的解决方案,我将两个窗口上的关闭按钮设置为在按下时关闭它们,所以现在app.quit()可以正常工作了。
代码现在看起来就像以前一样,我刚刚添加了一个ipcMain关闭窗口的函数,如下所示:

ipcMain.on('close-all-windows', function() {
    forgotPasswordWindow.close(loginWindow.close())
})

最后,最后一个app.on函数如下所示:

app.on('window-all-closed', function () {
    if (process.platform !== 'darwin') app.quit()
})

感谢大家的帮助


推荐阅读