2015-07-01 124 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

我沒有關閉按鈕上的拖動效果,因此當我點擊它們時沒有反應。感謝您的優秀教程! –