【问题标题】:Close Electron app on click event点击事件关闭 Electron 应用
【发布时间】: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>

【问题讨论】:

    标签: javascript electron desktop-application atom-editor


    【解决方案1】:

    在您的渲染器进程(从main.html 加载的javascript)中,您应该能够加载Electron 和Node 模块。

    const {ipcRenderer} = require('electron');
    const closeApp = document.getElementById('closeApp');
    closeApp.addEventListener('click', () => {
        ipcRenderer.send('close-me')
    });
    

    ma​​in.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();
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-29
      相关资源
      最近更新 更多