电子不听keydown事件
问题描述:
我是一个后端开发人员得到一个小项目来解决它。 所以我的老板给了我一个运行在触摸设备上的电子项目。电子不听keydown事件
我知道如果使用document
对象,我可以在Javascript中听任何关键事件,但在电子中它不起作用,它说docuemnt cannot be found
。
因此,当我或其他支持人员按下F12按钮然后开发工具在电子应用程序中呈现出来时就实现了这一点。
mainWindow = new BrowserWindow({
'web-preferences': {'web-security': false}
});
mainWindow.onkeydown = function (e) {
console.log("Key down");
if (e.which === 123) {
console.log("Key is F12");
mainWindow.webContents.openDevTools();
}
};
但是,这段代码对我没有用。我不知道如何我可以听按F12按钮。
不幸的是,我不能渲染出可以显示devtools的UI的按钮。因为客户不能按下它。
有时我需要在设备上的devtools中看到实时控制台选项卡。
答
有一个known issue in Electron,它阻止了常规方法使用传统的JS方法来捕捉关键事件。
还有一个叫做electron-localshortcut的小型库,通过在窗口处于活动状态时劫持Electron全局快捷方式API来绕过此问题。
使用像这样在你的main.js:
const electronLocalshortcut = require('electron-localshortcut');
electronLocalshortcut.register(mainWindow, 'F12',() => {
// Open DevTools
});
做这项工作的keydown或者只是按键? – Jaybeecave
Electron中的[加速器文档](https://github.com/electron/electron/blob/master/docs/api/accelerator.md)并没有说明它们是基于什么,而是暗示了按键。 –
谢谢,我试着用globalShortcut注册键盘事件,但是这只适用于第一个打开的Electron窗口,如果它们同时打开,它不适用于多个窗口。 electron-localshortcut可用于同时打开多个窗口 – toongeorges