单击事件关闭 Electron 应用程序
Close Electron app on click event
我已经查看了有关 'frameless-window' 的 Electron 文档,但我似乎无法通过自己的工作制作一个按钮来关闭应用程序...
如有任何帮助,我们将不胜感激!谢谢!
const electron = require('electron');
const url = require('url');
const path = require('path');
const {app, BrowserWindow} = electron;
let mainWindow;
// Listen for app to be ready
app.on('ready', function() {
// create new window
mainWindow = new BrowserWindow({width: 800, height: 600, frame: false});
// Load html into window
mainWindow.loadURL(url.format({
pathname:path.join(__dirname,'main.html'),
protocol: 'file:',
slashes: true
}));
const closeApp = document.getElementById('closeApp');
closeApp.addEventListener('click', () => {
app.quit();
});
});
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Electron "Hello World"</title>
</head>
<body>
<header>
<p id="closeApp">close app</p>
</header>
</body>
</html>
在您的渲染器进程中(javascript 从 main.html
加载)您应该能够加载 Electron 和 Node 模块。
const {ipcRenderer} = require('electron');
const closeApp = document.getElementById('closeApp');
closeApp.addEventListener('click', () => {
ipcRenderer.send('close-me')
});
在 main.js 您发布的脚本中
const {ipcMain} = require('electron')
ipcMain.on('close-me', (evt, arg) => {
app.quit()
})
截至 2022 年,已确认的解决方案将在控制台中产生错误 'Uncaught ReferenceError: require is not defined'。我们不会在此示例中使用 'renderer.js' 脚本。
这些是解决这个问题的步骤:
在Preload.js脚本中
const { ipcRenderer } = require('electron');
document.getElementById('closeApp').addEventListener('click', () => {
ipcRenderer.invoke('quit-app');
});
在Main.js脚本中
ipcMain.handle('quit-app', () => {
app.quit();
});
我已经查看了有关 'frameless-window' 的 Electron 文档,但我似乎无法通过自己的工作制作一个按钮来关闭应用程序...
如有任何帮助,我们将不胜感激!谢谢!
const electron = require('electron');
const url = require('url');
const path = require('path');
const {app, BrowserWindow} = electron;
let mainWindow;
// Listen for app to be ready
app.on('ready', function() {
// create new window
mainWindow = new BrowserWindow({width: 800, height: 600, frame: false});
// Load html into window
mainWindow.loadURL(url.format({
pathname:path.join(__dirname,'main.html'),
protocol: 'file:',
slashes: true
}));
const closeApp = document.getElementById('closeApp');
closeApp.addEventListener('click', () => {
app.quit();
});
});
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Electron "Hello World"</title>
</head>
<body>
<header>
<p id="closeApp">close app</p>
</header>
</body>
</html>
在您的渲染器进程中(javascript 从 main.html
加载)您应该能够加载 Electron 和 Node 模块。
const {ipcRenderer} = require('electron');
const closeApp = document.getElementById('closeApp');
closeApp.addEventListener('click', () => {
ipcRenderer.send('close-me')
});
在 main.js 您发布的脚本中
const {ipcMain} = require('electron')
ipcMain.on('close-me', (evt, arg) => {
app.quit()
})
截至 2022 年,已确认的解决方案将在控制台中产生错误 'Uncaught ReferenceError: require is not defined'。我们不会在此示例中使用 'renderer.js' 脚本。
这些是解决这个问题的步骤:
在Preload.js脚本中
const { ipcRenderer } = require('electron');
document.getElementById('closeApp').addEventListener('click', () => {
ipcRenderer.invoke('quit-app');
});
在Main.js脚本中
ipcMain.handle('quit-app', () => {
app.quit();
});