【发布时间】:2019-02-09 15:39:37
【问题描述】:
我正在尝试开发一个带有单独设置窗口的应用程序(在电子中)。当设置窗口打开并关闭主窗口时,我想阻止关闭主窗口并聚焦设置窗口。
现在我这样做如下:
window.onbeforeunload = e => {
console.log(e);
if(settingsWindow) {
settingsWindow.focus();
e.returnValue = false;
}
else e.returnValue = true;
};
这虽然可以防止重新加载我不想要的窗口。 所以我要求一种不同的预防方法或一种方法来检测它是重新加载还是关闭。
问候埃利亚斯 =)
编辑/解决方案:
利用ipcMain 和ipcRenderer 在主进程中创建窗口来处理所有事情。在那里您可以捕获和阻止close 事件。
MAIN.JS
const {ipcMain} = require("electron");
...
ipcMain.addListener("ASYNC_MSG", (event, arg) => {
switch(arg) {
case "OPEN_SETTINGS": createSettingsWindow(); break;
}
});
...
mainWindow.addListener("close", e => {
if(settingsWindow) {
e.preventDefault();
e.returnValue = false;
settingsWindow.focus();
}
else e.returnValue = true;
});
RENDERER.JS
const {ipcRenderer} = require("electron");
...
ipcRenderer.send("ASYNC_MSG", "OPEN_SETTINGS");
【问题讨论】:
-
'close'event 怎么样?它被称为 beforeonbeforeunload并且不会与重新加载冲突 -
嗯,是的,但我无法让它工作......不过我找到了解决问题的方法。 =)
-
添加了“关闭”事件的实现
标签: electron