【发布时间】:2019-04-01 03:45:05
【问题描述】:
我制作了一个基本的电子托盘,当单击其中一个选项时会打开一个窗口。我检查我是否用布尔值打开了 BrowserWindow 并创建或显示/隐藏窗口。
const contextMenu = Menu.buildFromTemplate([
{ label: 'Open configuration menu', click:() => {
console.log("called createwin");
createwin();
}
而createwin是:
function createwin(){
if (windowshown == false) {
mainWindow = new BrowserWindow({
width: 1000,
height: 800,
webPreferences: {
nodeIntegration: true
}
})
console.log("Window has been created")
windowshown = true;
mainWindow.loadFile('configuration.html')
}
else {
mainWindow.show();
console.log("Window has been shown");
}
mainWindow.on('close', (event) => {
event.preventDefault();
console.log("Window has been hidden");
mainWindow.hide();
})
}
当我隐藏/显示它创建的窗口 4 次时,我的控制台如下所示:
called createwin
Window has been created
window has been hidden
called createwin
Window has been shown
window has been hidden
window has been hidden
called createwin
Window has been shown
window has been hidden
window has been hidden
window has been hidden
called createwin
window has been hidden
window has been hidden
window has been hidden
window has been hidden
第四次之后,它就停止响应。我什至做不到
mainWindow.removeAllListeners('close');
mainWindow.close()
mainWindow = null
app.quit();
我的问题是我的应用在第四次隐藏窗口后完全没有响应。
更新:如果我以 npm start 而不是 Visual Studio 代码的调试器开始,隐藏窗口后,应用程序将完全无响应。
我在这里错过了什么?
【问题讨论】:
-
不要在
close事件中调用mainWindow.hide();。 -
在不关闭我的应用程序的情况下如何摆脱那个窗口?
-
致电
mainWindow.hide();,然后在close事件中进行您需要做的任何清理工作。