Atom Electron-使用javascript关闭窗口

Atom Electron-使用javascript关闭窗口,javascript,electron,Javascript,Electron,我使用的是Electron(原名atom shell),希望有一个极简的框架窗口,这样三个OSX窗口按钮(close、maximize、minimize)可以从HTML页面的中看到 我将Electron选项frame设置为false,以定义无铬无框窗口 我想我可以用这样的东西来处理关闭按钮: <a btn href="#" id="close" onclick="window.top.close(); return false"></a> 不幸的是,没有运气。您知道

我使用的是
Electron
(原名atom shell),希望有一个极简的框架窗口,这样三个OSX窗口按钮(close、maximize、minimize)可以从HTML页面的中看到

我将Electron选项
frame
设置为
false
,以定义无铬无框窗口

我想我可以用这样的东西来处理关闭按钮:

<a btn href="#" id="close" onclick="window.top.close(); return false"></a>


不幸的是,没有运气。您知道如何实现这一点吗?

您必须访问主进程创建的BrowserWindow对象,并在此基础上调用
最小化
最大化
关闭
方法。您可以使用
远程
模块访问此功能。以下是绑定所有三个按钮的示例:

  const remote = require('electron').remote;

  document.getElementById("min-btn").addEventListener("click", function (e) {
       var window = remote.getCurrentWindow();
       window.minimize(); 
  });

  document.getElementById("max-btn").addEventListener("click", function (e) {
       var window = remote.getCurrentWindow();
       if (!window.isMaximized()) {
           window.maximize();          
       } else {
           window.unmaximize();
       }
  });

  document.getElementById("close-btn").addEventListener("click", function (e) {
       var window = remote.getCurrentWindow();
       window.close();
  }); 
假设您的min、max、close按钮的ID分别为
min btn
max btn
close btn

您可以在此处查看BrowserWindow的完整文档以及可能需要的其他功能:


这也可能有助于您查看我写的一篇教程,该教程介绍了如何构建一个类似Visual Studio的无铬窗口:。您的问题将与一些css一起讨论,以正确定位按钮。

我已声明我的窗口:

const electron = require('electron')
const path = require('path')
const BrowserWindow = electron.remote.BrowserWindow

const notifyBtn = document.getElementById('notifyBtn')

notifyBtn.addEventListener('click',function(event){

    const modalPath = path.join('file://', __dirname,'add.html')
    let win = new BrowserWindow({ webPreferences: {nodeIntegration: true}, frame: false, transparent: true, alwaysOnTop:true, width: 400, height: 200 })
    win.on('close',function(){win = null})
    win.loadURL(modalPath)
    win.show()

})
要关闭此窗口,请执行以下操作:

const electron = require('electron')
const path = require('path')
const remote = electron.remote

const closeBtn = document.getElementById('closeBtn')

closeBtn.addEventListener('click', function (event) {
    var window = remote.getCurrentWindow();
    window.close();
})

脚本只允许在自己打开窗口的情况下关闭窗口。那么,Electron事件系统是否允许一些窗口级别的事件侦听,以便我可以触发自定义的“关闭”事件,这些事件将在
main.js
Electron窗口级别捕获?我对Electron一无所知。这是关于Javascript的一般规则。“这是关于Javascript的一般规则”,通常在浏览器中实现;一般来说,“窗口”可以根据脚本宿主的需要定义。我没有关闭按钮上的拖动效果,因此当我单击按钮时它们没有反应。谢谢你的精彩教程!注意,;如果您的窗口具有“可调整大小:false”选项,则在单击“最大btn”后无法将窗口恢复为其原始大小。对于其他努力让按钮正常工作的人。