gpt4 book ai didi

Electron | onbeforeunload 防止重新加载

转载 作者:行者123 更新时间:2023-12-03 12:22:58 24 4
gpt4 key购买 nike

我正在尝试开发一个带有单独设置窗口( Electron )的应用程序。当设置窗口打开而主窗口关闭时,我想防止主窗口关闭并聚焦设置窗口。

现在我这样做如下:

window.onbeforeunload = e => {
console.log(e);
if(settingsWindow) {
settingsWindow.focus();
e.returnValue = false;
}
else e.returnValue = true;
};

虽然这会阻止重新加载窗口,但我不希望这样做。所以我要求一种不同的预防方法或一种检测它是重新加载还是关闭的方法。

问候埃利亚斯 =)

编辑/解决方案:利用 ipcMainipcRenderer 在主进程中创建窗口来处理所有事情。在那里您可以捕获并阻止 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'事件,称为 before onbeforeunload 并且不会与重新加载发生冲突

const { app, BrowserWindow } = require('electron')

app.once('ready', () => {
let main = new BrowserWindow({title: 'main'})
let settings = new BrowserWindow({title: 'settings'})

main.on('close', (event) => {
if (settings) {
event.preventDefault()
event.returnValue = false
settings.focus()
} else {
event.returnValue = true
}
})
settings.on('closed', () => {
settings = null
})
})

关于 Electron | onbeforeunload 防止重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52169092/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com