点击事件关闭 Electron 应用
Posted
技术标签:
【中文标题】点击事件关闭 Electron 应用【英文标题】:Close Electron app on click event 【发布时间】:2018-03-21 01:39:25 【问题描述】:我查看了有关“无框窗口”的 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>
【问题讨论】:
【参考方案1】:在您的渲染器进程(从main.html
加载的javascript)中,您应该能够加载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()
)
【讨论】:
你是救世主! +1 自 2022 年 2 月起,默认情况下这并不能解决问题。控制台“未捕获的 ReferenceError:未定义要求”中的错误。您必须实际添加 'const ipcRenderer = require('electron');'在“preload.js”脚本中。【参考方案2】:截至 2022 年,已确认的解决方案将在控制台中产生错误“未捕获的 ReferenceError:未定义要求”。在此示例中,我们不会使用“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();
);
【讨论】:
以上是关于点击事件关闭 Electron 应用的主要内容,如果未能解决你的问题,请参考以下文章
Electron 应用程序窗口在最小化、最大化和关闭事件时仍然有动画
在presentingViewController中处理点击事件以关闭侧边菜单