Javascript 如何强制关闭电子应用程序?

Javascript 如何强制关闭电子应用程序?,javascript,electron,exit,close-application,Javascript,Electron,Exit,Close Application,我有一个electron应用程序,它加载应用程序web版本的URL。 但是,我无法通过单击X按钮关闭应用程序,并且我没有访问webapp的权限。 我试过这个: let count = BrowserWindow.getAllWindows().length; ///returns 1, so there is only 1 window) window.onbeforeunload=function(e){ e.returnValue=

我有一个electron应用程序,它加载应用程序web版本的URL。 但是,我无法通过单击X按钮关闭应用程序,并且我没有访问webapp的权限。 我试过这个:

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)
有效,但我不想使用它。是否有方法可以使用
窗口关闭应用程序。关闭
应用程序。退出

编辑: 问题在于这些全局预卸载事件。如果我在devtools中单击“删除”,我就可以关闭应用程序。


还有这个
let names=window.eventNames()返回一个数组,该数组在卸载事件之前不包含任何事件。在创建BrowserWindow的文件中,您可以将事件附加到窗口的“关闭”处理程序。对于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();
});

您需要保存浏览器窗口对象引用。然后侦听“已关闭”事件并取消引用它:

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

let win; // = new BrowserWindow();

win.on('closed', () => {
  win = null
})
取消引用后,一切都很简单,只需在应用程序上收听“窗口全部关闭”事件即可:

app.on('window-all-closed', () => {
  app.quit()
})

等等,您是否在electron(主)代码中使用窗口全局(渲染器)?您可以发布repo链接吗?我正在创建一个浏览器窗口,然后在该窗口中加载url。我不能发布链接:(我不是JavaScript英雄,但我认为使用
window
作为变量名是一个“坏主意”。