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注册全局快捷键的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 15. Electron注册全局快捷键
微信
支付宝