如何让鼠标按钮 4 / 5(浏览器后退/浏览器前进)在 Firefox 中工作?

Posted

技术标签:

【中文标题】如何让鼠标按钮 4 / 5(浏览器后退/浏览器前进)在 Firefox 中工作?【英文标题】:How to get Mouse buttons 4 / 5 (Browser back / Browser forward) working in Firefox? 【发布时间】:2020-07-08 18:20:06 【问题描述】:

首先,我需要说的是,我知道对于这些“浏览器后退”和“浏览器前进”鼠标按钮使用什么按钮编号方案约定存在一些混淆,具体取决于您是否使用从零开始的编号@ 987654325@ 或一个1。由于这个问题是关于 Firefox 的,所以我将通过 Mozilla's numbering scheme here 回答。

我一直在努力解决仅在 Firefox 中看到的问题,其中鼠标按钮 4(后退)和 5(前进)在 Firefox 中显示为按钮 2 单击(中间按钮单击)事件。按下按钮 4 或 5 会导致出现带有向上和向下箭头的圆形“自动滚动”图标:

我已经使用this Mouse Event Test Page 进行了一些调试。 Chrome 和 Firefox 的结果不同。似乎“which”JS 事件属性编号为45,而button 属性编号为34。无论如何,Google Chrome 将它们正确地解释为“浏览器返回”和“浏览器前进”按钮,而 Firefox 则没有。

铬:

鼠标按钮“4”(返回)

mousedown   which=4 button=3 buttons=8
mouseup     which=4 button=3 buttons=0

鼠标按钮“5”(前进)

mousedown   which=5 button=4 buttons=16
mouseup     which=5 button=4 buttons=0

鼠标按钮“2”(中键)

mousedown   which=2 button=1 buttons=4
mouseup     which=2 button=1 buttons=0

火狐:

鼠标按钮“4”(返回)

mousedown   which=2 button=1 buttons=8
mouseup     which=2 button=1 buttons=0

鼠标按钮“5”(前进)

mousedown   which=2 button=1 buttons=16
mouseup     which=2 button=1 buttons=0

鼠标按钮“2”(中键)

mousedown   which=2 button=1 buttons=4
mouseup     which=2 button=1 buttons=0

作为the page says,并非所有浏览器都能正常工作。它还指出:

但是,在某些浏览器中,无法禁用默认值,因此可能会出现各种奇怪的副作用。

在 Firefox 中,我注意到单击所有这三个按钮会启动一个带有 javascript:void(null) 的新选项卡。这与链接的 URL 属性 (href="javascript:void(null)") 相同,我们可以从该页面的源代码中看到。因此这种行为与 Middle Button Click 事件一致,该事件通常会使用该 URL 启动一个新选项卡。

是否可以让这些用于“浏览器返回”和“浏览器前进”的按钮在 Firefox 中正常工作?

【问题讨论】:

在使用非 Apple 鼠标的 Mac 上遇到同样的问题。后退和前进按钮适用于 Chrome,不适用于 Firefox。然而,我在 Linux 中使用鼠标,一切正常。令人沮丧! 在 Firefox Mac 上通过蓝牙使用 Logitech MX Master 时遇到此问题。它实际上似乎激活了中键。 我在 MacOS(10.15.4 – 最新)中遇到了一些其他奇怪的鼠标事件问题,有时包括触摸板,所以这实际上可能是 MacOS 本身的错误。我也遇到了 Logitech Options 软件的问题,理论上它可以通过每个应用程序的鼠标按钮覆盖(键盘分配)来解决这个 Firefox 问题。 @PhilRicketts 相同的鼠标:Logitech MX Master 安装了最新的“Logi Options”软件。这两个按钮映射到默认值:“Forward”和“Back”键。在 macOS 上使用 xev 命令检查键盘和鼠标事件表明 只有鼠标中键 会产生如下按下和释放事件:``` ButtonPress 事件,序列号 34,合成 NO,窗口 0x600001,root 0x111,subw 0x600002,时间 1694483061,(33,35),root:(33,58),状态 0x0,按钮 2,same_screen YES ``` @TrinitronX 它现在主要在 Firefox 中为我工作,虽然偶尔它会再次停止工作,我只剩下中键操作,正如你所描述的那样。我有时也会遇到 MX Master 的指针减速,但我安装了USB Overdrive prefpane 以提高轮询率,作为解决该问题的绝望尝试。相关:我的鼠标在听蓝牙耳机时偶尔会变得不稳定。打开USB Overdrive prefpane 奇怪地修复了它,这让我相信这是某种 Mac 蓝牙错误。另外,我有两个 MX Master 有同样的问题。 【参考方案1】:

在 Logitech MX Master 3 / MacOS 10.15.7 / Firefox 81.0.2 上遇到同样的问题(后退/前进按钮突然停止工作,原因不明)。 NVRAM / PRAM reset 为我修复了它!

【讨论】:

不幸的是,这对我不起作用,有同样的问题(但仅在 Firefox 中)【参考方案2】:

我可以推荐SensibleSideButtons 项目。它很容易安装,它也可以修复许多其他程序中的鼠标按钮。

【讨论】:

这样就行了!不仅可以使用罗技鼠标。 SensibleSideButtons 会干扰 VSCode 等应用程序。 没有在 VSCode 中尝试过。但我正在使用 Jetbrains phpStorm 并且可以说没有这样的问题。但很高兴知道 VSCode 中存在问题。也许你可以看看这个项目的github issues。【参考方案3】:

我遇到了同样的问题。

系统信息

macOS 10.15.5 火狐83.0 罗技 MX Master 2S 无线鼠标

复制步骤

打开 Firefox。 导航到页面。 点击后退,点击前进。

分辨率

安装Logitech Options for macOS。 打开应用程序。 允许应用程序控制您的计算机:系统偏好设置 > 安全和隐私 > 辅助功能 > 检查 Logi 选项Logi 选项守护程序

【讨论】:

原来就是这样!但是,有apparently now some extra steps。我必须将Logi Options Daemon 添加到AccessibilityInput monitoringScreen Recording。其中一些缺少要检查的Logi 项目,因此我通过单击+ 图标并导航到:/Library/Application Support/Logitech/Logitech Options/Logi Options Daemon/Applications/Logi Options 手动添加它们 经过一番试验后的另一个重要注意事项:在我尝试删除并重新添加 Logi Options Daemon 后,后退/前进 鼠标滚轮按钮再次停止工作这些设置用于测试目的。唯一修复它的是完全卸载、重新启动、重新安装、重新启动,最后进入每个 System Preferences > Security & Privacy 部分以再次取消选中并重新检查每个 Logi* 项目!当提示重新启动每个程序时,请执行此操作!不知何故,这些设置在最后一步之前一直处于非操作状态! 不幸的是,这个解决方案不适用于有线鼠标,因为“Logitech Options”需要一个 USB 加密狗......而且我有一个 M500s (M-U0007)...... :-( 【参考方案4】:

这不是供应商特定的问题。任何多键鼠标都可能受此影响。解决方案:karabiner-elements。现场安装说明。否则对于 brew 用户来说很简单:

brew install karabiner-elements

打开 karabiner-elements 并为其授予所需的所有权限。 在程序界面本身中导航到设备并在鼠标设备旁边的粗框上添加一个标记。 转到“复杂修改”,然后单击“规则”->“添加规则”->“从 Internet 导入更多规则”。 在新打开的浏览器窗口中搜索“更改鼠标按钮(第 2 版)”,然后按蓝色的“导入按钮”。 成功导入后,请务必启用最适合您的组合。

对于罗技 MX 主控(原来的向下侧按钮向后,向上侧按钮向前),要启用的配置文件是“将按钮 4,5 更改为向后向前”。

Karabiner 可以提供几乎无穷无尽的组合和重新映射

【讨论】:

【参考方案5】:

好消息:在 FF 92 中修复了错误

bug 已修复,该修复将包含在 Firefox 版本 92 中,即 released in early September 2021。

在当前的Nightly Build(92 版)中,它已经在工作,您可以按预期使用鼠标按钮 4 和 5 进行浏览器前后导航。 我用 MacOS 和普通的戴尔鼠标对其进行了测试。


更新(2021 年 9 月 7 日)

如前所述,Firefox 92 已于今天发布,鼠标按钮 4 和 5 就像一个魅力 ? 结案。

【讨论】:

好消息!迫不及待地想最终解决这个错误! 试过 Nightly 并且可以确认它是固定的 Firefox 92 于 2021 年 9 月 9 日在 Ubuntu 20.04 LTS repos 发布!我可以确认此错误已在 Linux 和 MacOS 中使用 Logitech MX Master 2S 和 MX Master 3 鼠标修复! 在 Firefox 92.0.1 发行版中确认

以上是关于如何让鼠标按钮 4 / 5(浏览器后退/浏览器前进)在 Firefox 中工作?的主要内容,如果未能解决你的问题,请参考以下文章

js如何使浏览器的后退和前进功能失效(IE FF 谷歌)

用iframe后 点后退按钮时总是在潜套框里后退,如何让整个父页面整体后退呢?

8.栈-实现浏览器的前进后退

如何使用javascript禁用后退和前进按钮

如何将pyqt5中的后退按钮和前进按钮添加到我的QGridLayout

栈:如何实现浏览器的前进和后退功能?