关闭在电子应用程序上重新加载的所有窗口

时间:2018-07-11 17:34:11

标签: electron

我有一个电子桌面应用程序,在加载时会打开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关闭所有窗口?

1 个答案:

答案 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()
  })
})