在 macOS 上的 Firefox 中正确切换到交互式元素

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。 立即开始使用 200 美元的免费积分!

我刚刚不得不调试 Firefox 中可聚焦元素的问题。 有人向我报告说,当在 CodePen 嵌入中切换到某个特定元素时,它会将滚动位置跳转到页面顶部(WTF?!)。 因此,我转到 Firefox 中的示例页面调试问题,这就是我看到的

我甚至不知道该怎么理解。 就像某些元素可以切换到,而其他元素不能? 你可以切换到 <button>,但不能切换到 <a>? 呃,在 Firefox 中无法切换到链接似乎不太对吧?

在搜索和询问后,事实证明这是 macOS 上操作系统级别的首选项。

系统偏好设置 > 键盘 > 快捷键 > 使用键盘导航在控件之间移动焦点

如果必须启用该选项,则还必须重新启动 Firefox。 启用后,然后就可以切换到您期望能够切换到的内容,例如链接。

关于页面顶部滚动的问题。 请参阅在 CodePen 嵌入中切换时显示的“跳过结果 iframe”链接? 它仅在获得焦点时显示(因为它的目的是跳过 <iframe>,而不是被迫切换通过它)。 我通过执行 position: absolute; top: -9999px; left: -9999px 操作(旧的肌肉记忆)将其“隐藏”,然后在获得焦点时删除这些值。 出于某种原因,当切换到该链接时,Firefox 会看到这些值并立即将页面向上跳转,即使焦点样式将其移回正常位置。 一定是某种竞争条件问题。

我还发现 Firefox 在该链接位于 iframe 内时会对页面执行此操作非常愚蠢。 我使用经过验证的 无障碍隐藏技术 修复了它。