我有一个电子应用程序,与不同的页面。我的应用程序中的一些按钮可以让用户在这些页面之间导航。但用户也可以使用鼠标侧的键导航到上一页/下一页。请问如何禁用这些键?Illustration
b4qexyjb1#
似乎没有一个标准的方法来做到这一点。BrowserWindow上有一个app-command事件,该事件将针对与按下鼠标上的后退/前进按钮相关的AppCommands触发。
BrowserWindow
app-command
mainWindow.on('app-command', (e, cmd) => { if (cmd === 'browser-backward' || cmd === 'browser-forward') { // ... } })
字符串现在事件是不可取消的,但理论上,您可以添加一个will-navigate事件并取消随后的导航(或者向后执行,取消所有导航,除非单击按钮)。不幸的是,这个解决方案似乎不起作用,因为当按下后退/前进按钮时,可能是由于this的原因,该事件不会被触发。虽然这是一个问题,但您可以拦截mouseup事件并取消后退和前进按钮:
will-navigate
mouseup
window.addEventListener("mouseup", (e) => { if (e.button === 3 || e.button === 4) e.preventDefault(); });
型
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); }
字符串
2条答案
按热度按时间b4qexyjb1#
似乎没有一个标准的方法来做到这一点。
BrowserWindow
上有一个app-command
事件,该事件将针对与按下鼠标上的后退/前进按钮相关的AppCommands触发。字符串
现在事件是不可取消的,但理论上,您可以添加一个
will-navigate
事件并取消随后的导航(或者向后执行,取消所有导航,除非单击按钮)。不幸的是,这个解决方案似乎不起作用,因为当按下后退/前进按钮时,可能是由于this的原因,该事件不会被触发。
虽然这是一个问题,但您可以拦截
mouseup
事件并取消后退和前进按钮:型
3phpmpom2#
它对我有效:
字符串