首页 > 解决方案 > 在电子应用程序上重新加载时关闭所有窗口

问题描述

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

标签: electron

解决方案


onbeforeunload窗口关闭或重新加载时触发事件(在渲染器中)。您可以使用它来关闭单个窗口。

否则,您可以通过 IPC 消息通知 electron 为您关闭所有窗口。

像这样的东西应该可以完成这项工作。

// 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()
  })
})

推荐阅读