繁体   English   中英

Electron 不监听 keydown 事件

[英]Electron does not listen keydown event

我是一名后端开发人员,有一个小项目来修复它。 所以我的老板给了我一个在触摸设备上运行的电子项目。

我知道如果我使用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 中查看实时控制台选项卡。

Electron 中有一个已知问题(最近被标记为wontfix ),它阻止了使用传统 JS 方法捕获关键事件的常用方法。

还有一个名为electron-localshortcut的小型库,它通过在窗口处于活动状态时劫持Electron全局快捷方式API来规避这个问题。

在 main.js 中像这样使用:

const electronLocalshortcut = require('electron-localshortcut');
electronLocalshortcut.register(mainWindow, 'F12', () => {
    // Open DevTools
});

您可以使用库mousetrap添加全局快捷方式,因为它可以通过节点安装,并且可以绕过已接受答案中提到的电子问题。

渲染过程中的代码示例是:

var Mousetrap = require('mousetrap');
Mousetrap.bind('4', function() { console.log('4'); });

没有额外的库,你可以使用电子的“globalShortcut”

const { app, BrowserWindow, globalShortcut } = require("electron");
globalShortcut.register("CmdOrCtrl+F12", () => {
  mainWindow.isFocused() && mainWindow.webContents.toggleDevTools();
});

我认为 F12 被保留了所以我使用了 ctrl+f12 这不远

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM