【问题标题】:How to don't trigger right mouse click on Ctrl+LeftMouseClick in Firefox on MacOS?如何在 MacOS 上的 Firefox 中不触发鼠标右键单击 Ctrl+LeftMouseClick?
【发布时间】:2021-03-18 08:39:48
【问题描述】:

我想在 React 项目中使用 Ctrl+LeftMouseClick 的快捷方式。

它在我的带有 Chrome 的 Mac 上运行良好,但在 Firefox 中,快捷方式触发鼠标右键单击 (event.button = 2)。我认为这是因为 Ctrl+LeftMouse Click 的 MacOS 右键单击​​功能。

但为什么它可以在 Chrome 中运行,我如何让它也可以在 Firefox 中运行?

【问题讨论】:

  • Ctrl+左键单击在大多数浏览器中用于在新选项卡中打开链接。您确定要这样打破用户的期望吗?
  • @Thomas 是的,我确定,该快捷方式仅用于没有链接的 3D 画布场景:)

标签: javascript reactjs typescript keyboard-shortcuts mouseclick-event


【解决方案1】:

也许以下纯 Javascript 的 Firefox 控制台测试结果将帮助您设计适当的 React 测试。我观察到我可以使用以下侦听器在 Firefox 中的触控板上捕获 ctrl-click。我注意到evt.button 对我来说始终是 2。但是,如果我使用的是触控板,那么我可以通过查看evt.buttons 来区分两指按下触发的右键单击。我没有用鼠标进行测试,但我希望鼠标可能需要区别对待。另外,请注意我已经读到伪装成右键单击的 ctrl-click 可能是用户控制的选项。

document.body.addEventListener('contextmenu', (evt) => {
    if (evt.ctrlKey && evt.buttons == 1) {
        console.log("ctrl-click detected");
        evt.preventDefault();
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    相关资源
    最近更新 更多