Я делаю приложение Electron.В этом приложении есть способ открыть новое окно (всплывающее окно) для перетаскивания на другой монитор.В этом окне есть способ открыть другое и так далее.Мне нужно, чтобы пользователь мог закрыть окно, которое он не хочет, но держать другие открытыми.
Сначала я попытался window.open
, но дочернее окно закрывается, когда родитель закрывается.Я думал, что это должно быть потому, что VAR собирает мусор.
Во-вторых, я попытался связать с событием new-window
в основном процессе.Вот что я сделал:
let windows = [];
function createNewWindow(){
let win = new BrowserWindow(
{
width: 1600,
height: 900,
webPreferences: {
nodeIntegration: true
}
}
);
win.webContents.on('new-window', (event, url) => {
event.preventDefault()
let win = createNewWindow();
win.loadURL(url);
event.newGuest = win;
})
windows.push(win);
return win;
}
Но ребенок закрывается, когда родитель закрывается.Я проверил windows
var, но он правильно сохраняется в основном процессе, поэтому это не должно быть проблемой GC.
Как открыть цепочку окон (с window.open
или без нее) безони закрываются, когда закрывается главный родитель?
РЕДАКТИРОВАТЬ
Поскольку я не нашел способа держать окна открытыми, я решил скрыть окна вместо закрытияих.Вот что я сделал:
win.on("close", (event) => {
if (win.hideInsteadOfClose == true) {
event.preventDefault();
win.hide();
}
});
Где hideInsteadOfClose
- это свойство, которое я даю новым окнам, созданным.Это не правильный способ сделать это, но он выполняет свою работу.Пожалуйста, не стесняйтесь ответить с правильным путем.