电子不听keydown事件

电子不听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 
}); 
+0

做这项工作的keydown或者只是按键? – Jaybeecave

+0

Electron中的[加速器文档](https://github.com/electron/electron/blob/master/docs/api/accelerator.md)并没有说明它们是基于什么,而是暗示了按键。 –

+0

谢谢,我试着用globalShortcut注册键盘事件,但是这只适用于第一个打开的Electron窗口,如果它们同时打开,它不适用于多个窗口。 electron-localshortcut可用于同时打开多个窗口 – toongeorges