要创建没有铬的窗口或任意形状的透明窗口, 你需要使用无框架窗口API。此”
api”
允许你创建无边框的无边框窗口, 该窗口的一部分(例如工具栏)不属于网页。
在浏览器中, Chrome是浏览器中除网页本身(例如工具栏, 菜单栏, 标签)之外的任何可见外观。要创建无框架窗口, 需要在所需的BrowserWindow实例中将frame属性设置为false:
const {BrowserWindow} = require('electron')let win = new BrowserWindow({width: 800, height: 600, frame: false})win.show()
提示:你可能希望在主窗口(main.js)中启用此功能, 该功能应类似于:
function createWindow () {// Create the browser window.mainWindow = new BrowserWindow({width: 800, height: 600, frame: false})// and load the index.html of the app.mainWindow.loadURL(`file://${__dirname}/index.html`)// Open the DevTools.mainWindow.webContents.openDevTools()// Emitted when the window is closed.mainWindow.on('closed', function () {// Dereference the window object, usually you would store windows// in an array if your app supports multi windows, this is the time// when you should delete the corresponding element.mainWindow = null})}
谁的执行应该创建类似于以下内容的窗口:
文章图片
但是, 你可能不想删除用户关闭, 最小化或最大化你的应用程序的可能性, 因此你需要学习如何做。这些方法在BrowserWindow中可用, 因此在渲染过程中, 你只需要使用BrowserWindow常量即可检索聚焦的窗口:
const {BrowserWindow} = require('electron').remote;
// Retrieve focused windowvar theWindow = BrowserWindow.getFocusedWindow();
// Execute common tasks// MinimizetheWindow.minimize();
// Maximize apptheWindow.maximize();
// Close apptheWindow.close();
典型的按钮, 但带有一些CSS和HTML 【如何在Electron Framework中使用最小化,最大化和关闭控件创建自定义无框架窗口(无标题栏)】你可以创建桌面应用程序与自定义HTML和CSS一起使用的工具栏。
在此示例中, 我们将使用以下标记:
<
div id="title-bar">
<
div id="title">
<
span style="vertical-align: middle;
">
<
img src="https://raw.githubusercontent.com/zeke/atom-icon/master/old-icon/2.png" style="width:20px;
height:20px;
"/>
<
/span>
Our Code World Frameless (But draggable, resizable and closable Window)<
/div>
<
div id="title-bar-btns">
<
button id="min-btn">
-<
/button>
<
button id="max-btn">
+<
/button>
<
button id="close-btn">
x<
/button>
<
/div>
<
/div>
还有一些使其看起来” 不错” 的样式:
body {padding: 0px;
margin: 0px;
}#title-bar {-webkit-app-region: drag;
height: 40px;
text-align: center;
line-height: 40px;
vertical-align: middle;
background-color: #03a9f4;
padding: none;
margin: 0px;
}#title {position: fixed;
top: 0px;
left: 6px;
color:white;
}#title-bar-btns {-webkit-app-region: no-drag;
position: fixed;
top: 0px;
right: 6px;
}
请注意, 标题栏类具有使你可以在屏幕上拖动窗口的类, 否则你的用户将被迫在屏幕上的静态位置(你可能不需要的东西)上使用你的应用程序。 -webkit-app-region:拖动;将使选定元素成为一个点, 以与原始标题栏相同的方式在屏幕上拖动整个窗口。
index.html文件中的最终实现应如下所示:
<
!DOCTYPE html>
<
html>
<
head>
<
meta charset="utf-8">
<
title>
My Electron Frameless Window<
/title>
<
style>
body {padding: 0px;
margin: 0px;
}#title-bar {-webkit-app-region: drag;
height: 40px;
text-align: center;
line-height: 40px;
vertical-align: middle;
background-color: #03a9f4;
padding: none;
margin: 0px;
}#title {position: fixed;
top: 0px;
left: 6px;
color:white;
}#title-bar-btns {-webkit-app-region: no-drag;
position: fixed;
top: 0px;
right: 6px;
}<
/style>
<
/head>
<
body>
<
div id="title-bar">
<
div id="title">
<
span style="vertical-align: middle;
">
<
img src="https://raw.githubusercontent.com/zeke/atom-icon/master/old-icon/2.png" style="width:20px;
height:20px;
"/>
<
/span>
Our Code World Frameless (But draggable, resizable and closable Window)<
/div>
<
div id="title-bar-btns">
<
button id="min-btn">
-<
/button>
<
button id="max-btn">
+<
/button>
<
button id="close-btn">
x<
/button>
<
/div>
<
/div>
<
div style="text-align:center;
">
<
h4>
Electron rocks!<
/h4>
<
img src="http://ourcodeworld.com/resources/img/ocw-empty.png" width="300" height="300"/>
<
/div>
<
script>
(function () {// Retrieve remote BrowserWindowconst {BrowserWindow} = require('electron').remotefunction init() {// Minimize taskdocument.getElementById("min-btn").addEventListener("click", (e) =>
{var window = BrowserWindow.getFocusedWindow();
window.minimize();
});
// Maximize windowdocument.getElementById("max-btn").addEventListener("click", (e) =>
{var window = BrowserWindow.getFocusedWindow();
if(window.isMaximized()){window.unmaximize();
}else{window.maximize();
}});
// Close appdocument.getElementById("close-btn").addEventListener("click", (e) =>
{var window = BrowserWindow.getFocusedWindow();
window.close();
});
};
document.onreadystatechange =() =>
{if (document.readyState == "complete") {init();
}};
})();
<
/script>
<
/body>
<
/html>
结果应用程序将如下所示:
文章图片
玩得开心 !
推荐阅读
- 如何在Electron Framework中获取屏幕的宽度和高度
- 如何使用Electron Framework创建透明窗口
- 如何在Electron Framework中实现和启用语法和拼写检查器
- 如何使用Kali Linux通过字典攻击来入侵Wi-Fi网络(WPA/WPA2)
- 使用intent和get方法时Android应用程序崩溃
- 泄露的意图接收器rxAndroidble UPDATED
- Whatsapp喜欢通过短信实现邀请,只是短信,而不是通过意图选择器
- java.lang.ClassCastException(在尝试通过Instagram共享打印屏幕时,无法将byte []强制转换为android.os.Parcelable错误)
- android.net.wifi.STATE_CHANGE意图处理(在Activity中)