electron 如何禁用下一个/上一个键(从鼠标)在电子?

dldeef67  于 2023-08-01  发布在  Electron
关注(0)|答案(2)|浏览(248)

我有一个电子应用程序,与不同的页面。我的应用程序中的一些按钮可以让用户在这些页面之间导航。但用户也可以使用鼠标侧的键导航到上一页/下一页。请问如何禁用这些键?
Illustration

b4qexyjb

b4qexyjb1#

似乎没有一个标准的方法来做到这一点。
BrowserWindow上有一个app-command事件,该事件将针对与按下鼠标上的后退/前进按钮相关的AppCommands触发。

mainWindow.on('app-command', (e, cmd) => {
  if (cmd === 'browser-backward' || cmd === 'browser-forward') {
    // ...
  }
})

字符串
现在事件是不可取消的,但理论上,您可以添加一个will-navigate事件并取消随后的导航(或者向后执行,取消所有导航,除非单击按钮)。
不幸的是,这个解决方案似乎不起作用,因为当按下后退/前进按钮时,可能是由于this的原因,该事件不会被触发。
虽然这是一个问题,但您可以拦截mouseup事件并取消后退和前进按钮:

window.addEventListener("mouseup", (e) => {
   if (e.button === 3 || e.button === 4)
      e.preventDefault();
});

3phpmpom

3phpmpom2#

它对我有效:

win.webContents.on('dom-ready', () => {
  this.disableMouseNavigation();
});

private disableMouseNavigation(): void {
    const disableNavigationScript = `
      document.addEventListener('mouseup', (event) => {
        if (event.button === 3 || event.button === 4) {
          event.preventDefault();
          event.stopPropagation();
        }
      });
    `;
   win.webContents.executeJavaScript(disableNavigationScript);
}

字符串

相关问题