管理菜单中的按钮高亮显示为黄色

自从最近更新到 2.8.0.beta2 后,管理员菜单的按钮高亮显示为黄色。

grafik

我原本以为 Discourse 想告诉我什么,但即使在网络和论坛上搜索后,我仍不清楚这究竟意味着什么。

能否有人为我解惑?

2 个赞

我想这是在告诉你,键盘焦点位于该选项上。这是一项最近的 #无障碍性 更改:

显示菜单后,尝试按 Tab 键在菜单中移动。

4 个赞

是的,没错。正如 @simonk 所指出的,我们之前的一个错误是未将焦点切换到覆盖层上。在应用程序中导航时,焦点必须位于合理的位置。

4 个赞

所以当我看到这种情况(鼠标悬停在“徽章”上时),这被认为是“符合预期”吗?

4 个赞

嗯,不太确定;我们那里需要悬停状态吗 @awesomerobot

1 个赞

我认为我们可能想在 CSS 中将 :focus 切换为 :focus-visible。目前 Safari 尚不支持该伪类,但在这种情况下,可以很容易地回退到 :focus

来自规范

如果活动元素匹配 :focus-visible,且脚本导致焦点移至其他位置,则新获得焦点的元素也应匹配 :focus-visible

这意味着,如果你通过按 Tab 键聚焦到汉堡菜单(从而启用 :focus-visible 样式),当菜单打开时, :focus-visible 样式会显示。但如果你使用指针设备打开菜单,则 :focus-visible 样式不会显示:

不过存在一个缺点:在混合输入场景中,如果你先用指针设备打开汉堡菜单,然后尝试通过 Tab 键导航……第一个链接上不会显示 :focus-visible 样式(尽管它实际上已聚焦),因此看起来像是被跳过了。目前还不清楚是否有解决方法……

5 个赞

由于我(大部分时间)使用鼠标,这正是我预期的行为。

另一方面,有时我会用触摸屏智能手机:这里也存在同样的问题,“管理”被高亮显示,暗示管理部分可能有需要关注的的重要内容。

从相关的屏幕阅读器主题中,我看到似乎需要以某种方式设置焦点。
只要指针的行为如上所述,我就已经很满意了。

1 个赞

我遇到了同样的问题。

我认为该元素目前并未达到贵方预期的用户体验价值——我们的论坛已立即收到关于此问题的错误报告。在窗口内任意位置右键单击时,焦点会消失;而在悬停按钮时,会出现双重焦点。对用户而言,这整体显得存在缺陷,尤其是因为 Discourse 并未在其他任何视图中强制实施这种选中状态。

更好的做法是:仅在用户首次按下 Tab 键时显示键盘焦点,或者仅在用户通过键盘操作打开汉堡菜单时显示。

2 个赞

你能贴一张这个的截图吗?我还没注意到这个问题。

1 个赞

这是在最新版本的 Chrome 上。

1 个赞

我在 Safari 和 Firefox(macOS)中也看到了同样的问题,上文帖子中也有相关提及:

如果我正确理解该功能的话,我应该能够通过点击或按 = 键打开该菜单,然后使用某种方式(方向键?)进行导航,再按某个键(回车?)来进入高亮显示的项。

在 macOS 的 Safari 和 Firefox 中,无论我是通过点击还是按 = 键打开该菜单,似乎都无法在该菜单内进行导航。上/下方向键会使页面向上或向下滚动,左/右方向键则没有任何可见效果。

Tab 键会将焦点切换到其他元素(例如帖子上的“点赞”按钮),并移除菜单上的黄色高亮。在 Firefox 中,Tab 键切换焦点的功能在我开始撰写此回复之前曾能在菜单项之间循环,但之后就不行了(两次尝试之间关闭了一个隐私窗口)。

我在 Meta 站点以及我更新至 efbc2481d8 的实例上也观察到了这些行为(不过 Firefox 中 Tab 键切换功能正常,这一点我仅在此处观察到)。

1 个赞

方向键应该不起作用,但 <kbd>Tab</kbd><kbd>Enter</kbd> 应该可以!

所以,当你用 <kbd>=</kbd> 打开菜单并按下 <kbd>Tab</kbd> 时,并没有在菜单项之间循环切换?我在 macOS 上使用 Safari、Firefox 和 Chrome 测试时,功能都符合预期,所以这个问题确实有点令人困惑!


我仔细查看了一下这里的一般情况,之前提到的使用 focus-visible 的想法行不通。

问题在于,汉堡菜单在 HTML 中出现在菜单按钮容器(包含搜索、汉堡和用户按钮的容器)之外。这意味着该菜单不在自然的 Tab 键顺序中。为了补偿这一点,我们使用 JavaScript 将 focus 设置到第一个菜单项上。这会产生一个副作用,即高亮显示该条目(因为我们也需要 :focus 样式)。

我认为我们不能完全依赖检测 <kbd>Tab</kbd> 按键,因为它不是屏幕阅读器用来导航的唯一按键,而且如果我们捕获所有按键,会干扰其他快捷键……

我能想到两种可能的修复方案:

  • 在 HTML 中移动菜单,使其紧接在触发它的按钮之后。这可能会带来一些布局上的副作用。
  • 当菜单打开时,将焦点限制在菜单内部,但不将焦点设置在任何特定项目上。这意味着当菜单打开时,你只能在其内容之间使用 Tab 键切换,而无法切换到页面其他部分。我认为这可能是更理想的解决方案……
2 个赞

没错。为了更具体说明,这是 macOS 11.4 和 Safari 14.1.1。我在隐私窗口中查看 meta,在自己的实例中则使用非隐私窗口。

我一定是最初测试 Firefox 时出了错。如果启用了系统偏好设置中的“使用键盘导航在控件间移动焦点”,Firefox 会按你描述的方式工作;如果禁用该设置,则如我之前所述,按 Tab 键会跳转到“点赞”按钮。

在 Firefox 中,只需切换该系统偏好设置,无需重新加载页面,即可可靠地在两种行为之间切换。

在 Safari 中,无论该系统偏好设置如何,按 Tab 键都会跳转到“点赞”按钮,即使重新加载页面后也是如此。我尚未在启用该设置后测试重启 Safari。

我现在也查看了 Chrome,无论系统偏好设置如何,它都按你描述的方式工作。

1 个赞

我在 Safari 中找到了问题的根源。我注意到,与 Chrome 和 Firefox 不同,如果在 Safari 的标题栏中点击并按下 Tab 键,它不会选中标题中的任何元素。

这促使我在 Safari 的“高级”设置中发现了这个偏好选项:
image

我 99% 确定这是 Big Sur 全新安装后的默认设置,我不认为我自己更改过它。启用该偏好选项后,其行为就开始如您所描述的那样工作。正如上方文字所述,即使关闭该偏好选项,使用 Option-Tab 组合键时也能实现相同效果。

2 个赞