我有一个电子桌面应用程序,在加载时会打开2个新窗口,打开新窗口的代码是这样的:
electron = require('electron')
win = electron.remote.getCurrentWindow();
BrowserWindow = electron.remote.BrowserWindow;
wind = new BrowserWindow({
width: 400,
height: 200,
x:3,
y:12,
frame: false,
// transparent: true,
alwaysOnTop: true, // Add this line
// skipTaskbar:true, // don't show icon on taskbar
opacity:0.9,
})
现在,当我测试我的应用程序时,我经常使用Reload命令(在Windows上为ctrl + R)。我的问题是,当我这样做时,窗户会保持打开状态,并且会在上面打开更多的窗户。
如何使Reload关闭所有窗口?
答案 0 :(得分:2)
关闭或重新加载窗口时,将触发onbeforeunload
事件(在渲染器中)。您可以使用它来关闭单个窗口。
否则,您可以通过IPC消息通知电子为您关闭所有窗口。
类似的事情应该可以完成。
// renderer/index.js
const {ipcRenderer} = require('electron')
ipcRenderer.send('my-closeallwindowsasap-channel') // can have arguments
// -------------------------------------------------------
// main/index.js
ipcMain.on('my-closeallwindowsasap-channel', (event, arg) => {
BrowserWindow.getAllWindows().forEach(window => {
window.close()
})
})