Как заставить приложение Electron закрыться? - PullRequest
0 голосов
/ 10 июля 2019

У меня есть электронное приложение, которое загружает URL-адрес веб-версии приложения. Однако я не могу закрыть приложение, нажав кнопку X, и у меня нет доступа к веб-приложению. Я пробовал это:

let count = BrowserWindow.getAllWindows().length; 
///returns 1, so there is only 1 window)

window.onbeforeunload=function(e){
    e.returnValue=undefined;
    return undefined;
}
window.close();
app.quit();

Ничего не происходит.

app.exit(0) работает, но я не хочу его использовать. Есть ли способ закрыть приложение с помощью window.close и app.quit?

EDIT: Проблема в глобальных событиях до загрузки. Если я нажимаю удалить в devtools, я могу закрыть приложение. enter image description here

Также этот let names= window.eventNames(); возвращает массив, который не имеет beforeunload events

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

Вам необходимо сохранить ссылку на объект BrowserWindow .Затем прослушайте событие «закрыто» и разыменуйте его:

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

let win; // = new BrowserWindow();

win.on('closed', () => {
  win = null
})

После разыменования все просто, просто прослушайте событие «окно-все-закрыто» в app :

app.on('window-all-closed', () => {
  app.quit()
})
0 голосов
/ 10 июля 2019

В файле, где вы создали BrowserWindow, вы можете прикрепить событие к обработчику 'close' для окна. Для Electron это обычно main.js.

const {app, BrowserWindow} = require('electron');
let mainWindow = null;
app.on('ready', () => {
    mainWindow = new BrowserWindow({
       //options here
    });
    mainWindow.loadURL([url here]);

    //attach event handler here
    mainWindow.on("close", () => {
       mainWindow = null;
       app.quit();
    });
});

На всякий случай, если у вас может быть более одного окна, поместите его в файл main.js.

app.on('window-all-closed', () => {
     if(process.platform !== "darwin")
         app.quit();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...