我想从另一个 html 带有按钮的页面关闭电子应用程序

I want close electron app from another html page with button

我们目前正在使用 electronjs 改进一个项目:如您所知,我们有 main.js 用于 electron,我们还有另一个 html 页面,其中包含 javascripts 代码。我们在此 html 页面中创建了一个关闭按钮,此按钮应关闭该应用程序,但我们无法到达 main.js 以关闭该应用程序。你能帮帮我吗?

此代码来自 html 页面:

<div class="background-three link-container">
        <button class="link-three" onclick="kapat()" id="kptbtn">Kapat</button>
    </div>
    <script>
        function kapat(){
            //what should I write here.
        }
    </script>

还有这个main.js

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




function createWindow() {
  const win = new BrowserWindow({
    transparent: true,
    frame: false,
    resizable: false,
    width: 500,
    height: 700,
    webPreferences: {
      preload: path.join(__dirname, 'preload.js')
    }
  })

  win.loadFile('girisEkrani.html')
}

app.whenReady().then(() => {
  createWindow()

  app.on('activate', () => {
    if (BrowserWindow.getAllWindows().length === 0) {
      createWindow()
    }
  })
})

app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit()
  }
})

您必须使用 ipcMainipcRenderer。 Main 读取消息,Renderer 发送消息。

.html page

<script>
    function kapat() {
        const { ipcRenderer } = require('electron')
        const ipc = ipcRenderer;
        ipc.send('kapat');
    }
    ...
</script>

如果您在函数之外定义 ipc 内容,它将不起作用并影响其他函数。

main.js

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

function createWindow() {
const win = new BrowserWindow({
transparent: true,
frame: false,
resizable: false,
width: 500,
height: 700,
  webPreferences: {
    nodeIntegration: true,
    contextIsolation: false,
  }
})

ipc.on('kapat', () => { win.close() })
win.loadFile('girisEkrani.html')
}