2015-07-01 79 views
30

我使用的是Electron(以前称为原子壳),并且希望有一个极简主义框架窗口,以便可从内部看到三个OSX窗口按钮(关闭,最大化,最小化)的HTML页面。原子电子 - 用javascript关闭窗口

当定义BrowserWindow为无框无窗口窗口时,我将Electron选项frame设置为false

,我想我可以用这样的处理的关闭按钮:

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

,没有运气,可悲。任何想法如何实现这一目标?

+0

脚本只有在打开窗口时才允许关闭窗口。 – Barmar

+0

那么Electron事件系统是否允许进行一些窗口级别的事件侦听,以便我可以触发我在'main.js'电子窗口级捕获的自定义“关闭”事件? –

+0

我对Electron一无所知。这是关于Javascript的一般规则。 – Barmar

回答

86

您必须访问您的主进程创建的BrowserWindow对象,并在其上调用minimize,maximizeclose方法。您可以使用remote模块访问它。下面是结合所有三个按钮的例子:

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-btnmax-btn,并且close-btn,IDS。

您可以查看BrowserWindow的完整文档以及您可能需要的其他功能:http://electron.atom.io/docs/v0.28.0/api/browser-window/

它也可以帮助你看看我编写的关于构建一个看起来像Visual Studio的无窗口的教程:http://www.mylifeforthecode.com/making-the-electron-shell-as-pretty-as-the-visual-studio-shell。你的问题与一些CSS一起覆盖,以正确定位按钮。

+2

我没有关闭按钮上的拖动效果,因此当我点击它们时没有反应。感谢您的优秀教程! –