electron开发问题记录

1. 如何开启debugger

代码片段
1 行
win.webContents.openDevTools()

2. 如何加载网页

GDScript3
1 行
win.loadURL("http://www.baidu.com")

3. 报错:ERROR:gpu_init.cc(481)] Passthrough is not supported, GL is disabled, ANGLE is
在main.js中禁用

GDScript3
3 行
const { app, BrowserWindow, ipcMain } = require('electron')
// 禁用当前应用程序的硬件加速
app.disableHardwareAcceleration()

4. 隐藏标题栏后,如何实现窗口拖动
在要拖动html元素上,加上样式:

代码片段
1 行
-webkit-app-region: drag

即可,通过样式:

代码片段
1 行
-webkit-app-region: no-drag

来控制哪些元素不拖动

代码片段
3 行
<div style="-webkit-app-region: drag">
  <div style="-webkit-app-region: no-drag"></div>
</div>

4. Electron官方中文文档地址
快速入门|Electron

实现全屏fullscreen

代码片段
6 行
mainWindow = new BrowserWindow({
//...
fullscreenable:true,
fullscreen: true,
simpleFullscreen:true,
});

simpleFullscreen是fullscreen的一个特殊形态,简单全屏是不按套路出牌的
fullscreen是按套路出牌的
那么fullscreenable属性,可以控制fullscreen: true属性,
还可以控制setFullScreen(true)函数
electron实现全屏fullscreen

菜单栏隐藏

1.Windows隐藏方法

GDScript3
2 行
const {electron,Menu,debug} = require('electron');
Menu.setApplicationMenu(null)

2.macOs的菜单隐藏方法

代码片段
1 行
app.dock.hide();到目前为止 只发现这一种处理方式

it's an os x only method (documentation)

关闭最小化

代码片段
1 行
保持单实例启动

electron应用是如何保持单实例启动的
最近在解决一个同一工程发布为多个客户端的问题时,涉及到了electron单实例启动的原理,抛开electron启动的一系列生命周期,那么electron应用是靠什么来确定启动时始终只有一个单实例的

首先在主进程app.ready事件之前调用app.requestSingleInstanceLock()方法
electron会自动检测是否启动了多个实例,返回一个布尔值;
如果为true,则调用app.quit(),应用退出。

electron 如何实现单实例?两种方案解决单实例问题

限制electron应用只能启动一次

GDScript3
4 行
const gotTheLock = app.requestSingleInstanceLock()
if (!gotTheLock) {
  app.quit()
}

禁用Windows键

node.js - 在Electron中禁用Windows键
我正在制作一个 Electron 桌面应用程序。我想在应用程序打开时禁用Windows键和功能键

我尝试使用以下代码...它注册了事件,但Windows菜单仍然打开

代码片段
7 行
$(document).keydown(function(e){

    if (e.keyCode == 37) {
       alert( "windows key pressed" );
       return false;
    }
});

您可以尝试这样做,但不幸的是,它将成为全局快捷方式,这意味着当窗口没有焦点时,
它仍会被注册。尝试放入console.log()看看它何时触发。 win是 Electron 窗口变量

GDScript3
7 行
const {app, globalShortcut} = require('electron');
win = new BrowserWindow();
globalShortcut.register('Super', () => {
  if (win.isFocused()) {
    // do something
  }
});

可以在此处查看文档:docs

或尝试在此处使用此模块:electron-localshortcut

JavaScript
4 行
electronLocalshortcut.register(win, 'Super', () => {
    console.log('Windows Button pressed');
    return false;
});