Electron去掉窗口邊框并添加關(guān)閉按鈕的實現(xiàn)步驟
Electron去掉窗口邊框并添加關(guān)閉按鈕
在 Electron 中,如果你想去掉默認的窗口邊框(frame)并添加額外的按鍵,你可以通過以下步驟來實現(xiàn):
1.去掉默認的窗口邊框:
使用 BrowserWindow 的 frame 選項,并將其設(shè)置為 false 來創(chuàng)建一個無邊框的窗口。
const { BrowserWindow } = require('electron')
let win = new BrowserWindow({
width: 800,
height: 600,
frame: false // 這里設(shè)置為 false 去掉邊框
})2.添加額外的按鍵:
有幾種方法可以實現(xiàn)這一點,但最常見的是使用 HTML/CSS/JavaScript 在你的 Electron 應(yīng)用的頁面中添加自定義的 UI 元素,這些元素可以充當(dāng)窗口的關(guān)閉、最小化和最大化按鈕。
你可以使用 Electron 的 IPC(進程間通信)機制來監(jiān)聽這些按鈕的點擊事件,并使用 Electron 的 API 來控制窗口(如關(guān)閉、最小化或最大化)。
例如,你可以在渲染進程(renderer process)中添加一個關(guān)閉按鈕,并通過 IPC 將點擊事件發(fā)送到主進程(main process)。然后,在主進程中處理這個事件并關(guān)閉窗口。
渲染進程(renderer.html):
<!DOCTYPE html>
<html>
<body>
<button id="close-btn">關(guān)閉</button>
<script>
const { ipcRenderer } = require('electron')
document.getElementById('close-btn').addEventListener('click', () => {
ipcRenderer.send('close-window')
})
</script>
</body>
</html>主進程(main.js):
const { BrowserWindow, ipcMain } = require('electron')
let win = new BrowserWindow({ /* ... */ })
ipcMain.on('close-window', () => {
win.close()
})3.處理窗口拖動:
由于你移除了默認的窗口邊框,你可能還需要處理窗口的拖動。這可以通過監(jiān)聽鼠標(biāo)事件并在適當(dāng)?shù)臅r候調(diào)用 Electron 的 move 方法來實現(xiàn)。
例如,你可以添加一個全屏的透明層,并在其上監(jiān)聽 mousedown、mousemove 和 mouseup 事件來模擬窗口的拖動。
請注意,這些只是基本的實現(xiàn)思路,并且可能需要根據(jù)你的具體需求進行調(diào)整。例如,你可能還需要處理窗口的最小化和最大化邏輯,以及可能的跨平臺兼容性問題。
Electron 無邊框窗口最大化最小化關(guān)閉功能
title: ‘[亂說]Electron 無邊框窗口最大化最小化關(guān)閉功能’
date: 2017-11-21 21:43:40
tags: Electron 無邊框窗口最大化最小化關(guān)閉功能
目的
- 實現(xiàn)無邊框窗口,并添加最大化最小化和關(guān)閉功能
前提
- 了解Electron 主進程和渲染進程的通訊
- 了解 BrowserWindow相關(guān)功能
操作流程
先在界面上放三個按鈕
<body style="-webkit-app-region: drag">
<section style="-webkit-app-region: drag">
<!--html代碼-->
<h1>Hello World!</h1>
</section>
<section style="-webkit-app-region: no-drag">
<button type="button" id="maxbt">max</button>
<button type="button" id="minbt">>min</button>
<button type="button" id="closebt">>close</button>
</section>
<!-- All of the Node.js APIs are available in this renderer process. -->
We are using Node.js <script>document.write(process.versions.node)</script>,
Chromium <script>document.write(process.versions.chrome)</script>,
and Electron <script>document.write(process.versions.electron)</script>.
<script>
// require('electron').ipcRenderer;
// You can also require other files to run in this process
require('./renderer.js')
</script>
</body>-webkit-app-region: drag是可拖動的樣式
2. 添加事件把要做的操作發(fā)送給主進程
var ipc = require('electron').ipcRenderer;
document.getElementById('maxbt').addEventListener('click', () => {
console.log('hello vscode!')
ipc.send('window-max');
})
document.getElementById('minbt').addEventListener('click', () => {
console.log('hello vscode!')
ipc.send('window-min');
})
document.getElementById('closebt').addEventListener('click', () => {
console.log('hello vscode!')
ipc.send('window-close');
})在主進程中調(diào)相應(yīng)的方法
const electron = require('electron')
const ipc = electron.ipcMain
//登錄窗口最小化
ipc.on('window-min',function(){
mainWindow.minimize();
})
//登錄窗口最大化
ipc.on('window-max',function(){
if(mainWindow.isMaximized()){
mainWindow.restore();
}else{
mainWindow.maximize();
}
})
ipc.on('window-close',function(){
mainWindow.close();
})提示 ipc不適合大數(shù)據(jù)通訊,最好只做命令的傳遞
源碼
基礎(chǔ)不穩(wěn)寫出來的代碼也不是很好,開源的學(xué)習(xí)成本其實是很高的,特別是對于新手,自己學(xué)習(xí)一定要把握好度。
到此這篇關(guān)于Electron去掉窗口邊框并添加關(guān)閉按鈕的實現(xiàn)步驟的文章就介紹到這了,更多相關(guān)Electron窗口邊框內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
前端實現(xiàn)高質(zhì)量批量導(dǎo)出數(shù)據(jù)的實戰(zhàn)指南
本文介紹了兩種常見的數(shù)據(jù)導(dǎo)出格式:JSON和XLSX,并提供了相應(yīng)的導(dǎo)出方法和性能優(yōu)化建議,對于JSON,最簡單的方法是直接使用Blob和URL.createObjectURL;對于XLSX,推薦使用SheetJS庫,并通過動態(tài)引入和WebWorker來優(yōu)化性能,需要的朋友可以參考下2026-03-03
前端實現(xiàn)跨標(biāo)簽頁通信的方案總結(jié)
這篇文章主要為大家詳細介紹了前端實現(xiàn)跨標(biāo)簽頁通信的相關(guān)方案,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-11-11

