我刚刚不得不调试 Firefox 中可聚焦元素的问题。 有人向我报告说,当在 CodePen 嵌入中切换到某个特定元素时,它会将滚动位置跳转到页面顶部(WTF?!)。 因此,我转到 Firefox 中的示例页面调试问题,这就是我看到的
我甚至不知道该怎么理解。 就像某些元素可以切换到,而其他元素不能? 你可以切换到 <button>,但不能切换到 <a>? 呃,在 Firefox 中无法切换到链接似乎不太对吧?
在搜索和询问后,事实证明这是 macOS 上操作系统级别的首选项。

如果必须启用该选项,则还必须重新启动 Firefox。 启用后,然后就可以切换到您期望能够切换到的内容,例如链接。
关于页面顶部滚动的问题。 请参阅在 CodePen 嵌入中切换时显示的“跳过结果 iframe”链接? 它仅在获得焦点时显示(因为它的目的是跳过 <iframe>,而不是被迫切换通过它)。 我通过执行 position: absolute; top: -9999px; left: -9999px 操作(旧的肌肉记忆)将其“隐藏”,然后在获得焦点时删除这些值。 出于某种原因,当切换到该链接时,Firefox 会看到这些值并立即将页面向上跳转,即使焦点样式将其移回正常位置。 一定是某种竞争条件问题。
我还发现 Firefox 在该链接位于 iframe 内时会对父页面执行此操作非常愚蠢。 我使用经过验证的 无障碍隐藏技术 修复了它。
每次我获得新的 Mac 时都会遇到这种情况——我不明白为什么他们不将此设置默认设置为开启。 如果我记得正确,Safari 中还有一个额外的复选框需要选中才能使选项卡按预期工作。
您可以使用
tabindex="0"将几乎任何元素强制进入选项卡顺序,而无需更改操作系统设置。我不知道我会根据此更改 HTML,这似乎是一个危险的游戏。 但我想我们一直都在做出这样的选择。