2017-10-21 66 views
0

我正在嘗試構建一個簡單的應用程序,它具有關閉,最大化和最小化按鈕。Electron v1.7:關閉,最大化和最大化

該應用程序的問題是關閉,最大化和最小化不能正常工作。單擊按鈕時,console.log()運行正常,並顯示正確的消息,但是,它不執行實際的關閉,最大化和最小化操作。

此外,不是在CSS中,我爲標題添加了-webkit-app-region: drag;,但爲選項(即按鈕)添加了-webkit-app-region: no-drag;

附加截圖。

enter image description here

驅動index.js的含量爲:

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

 
let win = null; 
 

 
function boot() { 
 
    win = new BrowserWindow({ 
 
     width: 640, 
 
     height: 480, 
 
     frame: false 
 
    }); 
 
    win.loadURL(`file://${__dirname}/index.html`); 
 
    win.on('closed',() => { 
 
     win = null; 
 
    }); 
 
} 
 

 
app.on('ready', boot);
header { 
 
    display: flex; 
 
    flex-direction: row-reverse; 
 
    justify-content: flex-start; 
 
    background: #353535; 
 
    color: black; 
 
    align-self: stretch; 
 
    -webkit-app-region: drag; 
 
} 
 

 
#content { 
 
    display: flex; 
 
    height: 100vh; 
 
    flex-direction: column; 
 
    background: black; 
 
    align-items: center; 
 
} 
 

 
.option { 
 
    color: white; 
 
    padding: 10px 25px; 
 
    font-size: 16px; 
 
    cursor: pointer; 
 
    -webkit-app-region: no-drag; 
 
    
 
} 
 

 
.option:hover { 
 
    background: red; 
 
}
<!DOCTYPE html> 
 
<html> 
 
    <head> 
 
     <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> 
 
     <title>Sample App</title> 
 
     <link rel="stylesheet" href="css/style.css"> 
 
    </head> 
 
    <body> 
 
     <div id="content"> 
 
      <header> 
 
       <div class="option" id="close">X</div> 
 
       <div class="option" id="minimize">-</div> 
 
       <div class="option" id="maximize">=</div>   
 
      </header>    
 
     </div> 
 
     
 
     <script src="js/script.js"></script> 
 
    </body> 
 
</html>

此外,的script.js的內容是

const {remote} = require('electron'); 

document.getElementById('close').addEventListener('click', closeWindow); 
document.getElementById('minimize').addEventListener('click', minimizeWindow); 
document.getElementById('maximize').addEventListener('click', maximizeWindow); 



function closeWindow() {   
    var window = remote.getCurrentWindow(); 
    window.close(); 
} 

function minimizeWindow() { 
    var window = remote.getCurrentWindow(); 
    window.minmize(); 
} 

function maximizeWindow() { 
    var window = remote.getCurrentWindow() 
    window.isMaximized() ? window.unmaximize() : window.maximize(); 
} 
+1

單擊按鈕時是否收到任何錯誤?根據[this](https://stackoverflow.com/a/37721711/7434393)回答'getFocusedWindow'應該可以工作,你試過了嗎? – kontrollanten

+1

在我正在開發的一個項目中,我實現了類似這樣的事情,但是我做到這一點的方式是當用戶單擊關閉按鈕時,它使用ipc發送消息到主進程,主進程只需調用'window .maximize()' –

+0

@kontrollanten,該答案解決了我的問題。請寫一個答案,以便它可以幫助每個人。如果你不想寫。請回復,我會自己寫答案。 :) – aps120797

回答

1

這可以是通過使用進行修復而不是getCurrentWindow

在你的script.js文件,更新的功能,closeWindow()minimizeWindow()maximizeWindow(),如:

const {remote} = require('electron'); 

document.getElementById('close').addEventListener('click', closeWindow); 
document.getElementById('minimize').addEventListener('click', minimizeWindow); 
document.getElementById('maximize').addEventListener('click', maximizeWindow); 

function closeWindow() { 
    var window = remote.BrowserWindow.getFocusedWindow(); 
    window.close(); 
} 

function minimizeWindow() { 
    var window = remote.BrowserWindow.getFocusedWindow(); 
    window.minimize(); 
} 

function maximizeWindow() { 
    var window = remote.BrowserWindow.getFocusedWindow(); 
    window.isMaximized() ? window.unmaximize() : window.maximize(); 
} 

之所以getFocusedWindow()的作品,而不是getCurrentWindow()可以通過有經驗的開發人員來解釋。

相關問題