gpt4 book ai didi

javascript - 即使有多个BrowserView元素,也可以在BrowserWindow内捕获按键

转载 作者:行者123 更新时间:2023-12-03 12:38:13 26 4
gpt4 key购买 nike

我有一个带有BrowserWindow的Electron应用程序,其中包含用于应用程序UI的index.html和多个BrowserView元素:

browserWindow = new BrowserWindow({ width: width, height: height, frame: false });
browserWindow.webContents.loadURL('file://' + __dirname + '/index.html');

var bv = new BrowserView({ webPreferences: { nodeIntegration: false }});
browserWindow.setBrowserView(bv);
我想在应用程序内的任何地方都有键盘快捷键,例如 中的CTRL + X。

此处
  • globalShortcut不合适,因为它适用于当前正在运行的所有进程。例如,即使 Electron 应用以外的其他应用具有焦点,也会捕获以下快捷方式(例如notepad.exe)
    globalShortcut.register('CommandOrControl+X', () => {
    console.log('CommandOrControl+X is pressed')
    })
  • 此方法不可行,因为它仅在index.html具有焦点时才有效,但在BrowserView 具有焦点时才起作用,而则无效:
    browserWindow.webContents.on('before-input-event', (event, input) => {
    if (input.control && input.key.toLowerCase() === 'x') {
    ...
    }

  • 问题:如何为当前Electron应用程序窗口注册键盘快捷键,如果index.html拥有焦点,而BrowserView拥有焦点,则如何工作?

    最佳答案

    解决方案:我们必须为每个BrowserViewwebContents运行以下代码:

    bv.webContents.on('before-input-event', (event, input) => {
    if (input.control && input.key.toLowerCase() === 'x') {
    ...
    }

    关于javascript - 即使有多个BrowserView元素,也可以在BrowserWindow内捕获按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65315498/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com