15. Electron注册全局快捷键
全局快捷键模块就是globalShortcut
,意思就是我们打开软件以后,按键盘上的快捷键,就可以实现用快捷键实现特定的功能,相当于用键盘快捷键触发某些事件。
globalShortcut
是主进程中的模块,而且注册的都是全局的快捷键,所以你尽量写在main.js
中。打开main.js
,然后先引入globalShortcut
,代码如下:
var globalShortcut = electron.globalShortcut
引入后,我们现在的需求是按快捷键ctrl+b
键后,打开我的博客https://mybj123.com
。这时候使用globalShortcut.register
方法就可以实现,全部代码如下:
var electron = require('electron'); // 引入 electron 模块 var app = electron.app; // 创建 electron 引用 var globalShortcut = electron.globalShortcut; var BrowserWindow = electron.BrowserWindow; // 控制窗口引用 var mainWindow = null; // 声明要打开的主窗口 app.on('ready', () => { mainWindow = new BrowserWindow({ width:1000, height:600,// 设置打开的窗口大小 webPreferences: { contextIsolation: false, worldSafeExecuteJavaScript: false, webSecurity: false, nodeIntegration: true, // 是否集成 node.js,解决 require is not defined 问题 nodeIntegrationInWorker: true, webviewTag: true, // 解决 webview 无法显示问题 enableRemoteModule: true } }); globalShortcut.register('ctrl+b',() => { mainWindow.loadURL('https://mybj123.com'); }); require('./main/menu.js'); mainWindow.loadFile('index6.html'); // 加载 HTML 页面 // 监听关闭事件,把主窗口设置为 null mainWindow.on('closed', () => { mainWindow = null; }) })
这里需要注意的是,注册全局的快捷键必须在ready
事件之后,才能注册成功。
检测快捷键是否注册成功
可以使用globalShortcut.isRegistered()
方法,来检测快捷键是否注册成功,因为你可能同时打开很多软件,它们已经占用了一些快捷键的组合,所以并不是你 100%可以注册成功的。
let isRegister= globalShortcut.isRegistered('ctrl+b')?'Register Success':'Register fail' console.log('------->'+isRegister)
这样就进行了检测,如果你在实际开发中,可能当有冲突时,软件是支持可以修改快捷键。
注销快捷键
因为我们注册的是全局的快捷键,所以当我们关闭软件或者窗口时,记得一定要注销我们的快捷键。防止关闭后打开其他软件和他们的快捷键冲突。
app.on('will-quit',function(){ //注销全局快捷键的监听 globalShortcut.unregister('ctrl+b') globalShortcut.unregisterAll() })
为了方便学习,给出全部main.js
代码:
var electron = require('electron'); // 引入 electron 模块 var app = electron.app; // 创建 electron 引用 var globalShortcut = electron.globalShortcut; var BrowserWindow = electron.BrowserWindow; // 控制窗口引用 var mainWindow = null; // 声明要打开的主窗口 app.on('ready', () => { mainWindow = new BrowserWindow({ width:1000, height:600,// 设置打开的窗口大小 webPreferences: { contextIsolation: false, worldSafeExecuteJavaScript: false, webSecurity: false, nodeIntegration: true, // 是否集成 node.js,解决 require is not defined 问题 nodeIntegrationInWorker: true, webviewTag: true, // 解决 webview 无法显示问题 enableRemoteModule: true } }); globalShortcut.register('ctrl+e',() => { mainWindow.loadURL('https://baidu.com'); }); let isRegister = globalShortcut.isRegistered('ctrl+e')?'Register Success' : 'Register fail'; console.log('------------' + isRegister); mainWindow.webContents.openDevTools(); require('./main/menu.js'); mainWindow.loadFile('index6.html'); // 加载 HTML 页面 // BrowserView // var BrowserView =electron.BrowserView; // var view = new BrowserView(); // mainWindow.setBrowserView(view); // view.setBounds({x:0,y:100,width:1000,height:450}); // view.webContents.loadURL('https://baidu.com'); // 监听关闭事件,把主窗口设置为 null mainWindow.on('closed', () => { mainWindow = null; }) }) app.on('will-quit', function () { // 注销全局快捷键的监听 globalShortcut.unregister('ctrl+e'); globalShortcut.unregisterAll(); })
以上技术笔记就是今天学的主要内容,而且本文的内容在Electron
开发中都会用到,希望大家练习一下,工作中用到了也可以回来翻看这篇笔记。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
码云笔记 » 15. Electron注册全局快捷键
码云笔记 » 15. Electron注册全局快捷键