“赞”按钮在某些情况下会失去标签

大家好!
这是一份简要报告。我刚刚在另一个帖子中发现,“点赞”按钮有时缺少无障碍标签。我尚未找到具体规律,但这可能与帖子是否已收到一个或多个点赞,或尚未收到任何点赞有关,此时控件会被拆分以显示该状态。随后我会看到两个按钮:其中一个显示计数,另一个则没有标签。

Marco

3 个赞

啊,我想这是因为我们正在 Meta 上测试我们的 Discourse Reactions 插件(https://meta.discourse.org/t/notice-testing-discourse-reactions-here-on-meta-for-1-week/183672)。我们需要修复这个问题!感谢你的反馈。

6 个赞

@Ahmed_Gagan 供参考,请务必查看一下。

5 个赞

我已尝试并用多种不同情况进行了测试,但无法复现该问题。标签始终会显示,只是首次显示会有些许延迟,这是 title 属性的通用行为。
我推测问题出在“点赞”按钮提供的工具提示上。我们是否对问题有一致的理解?

1 个赞

我指的是屏幕阅读器在按下“点赞”按钮时播报的内容。或者,您或许可以添加其他反应,但我的屏幕阅读器对此完全没有任何提示。唯一有标签的元素是显示当前点赞数的控件(当点赞数为1或更高时)。如果点赞数为0,该控件甚至不会出现。然而,在 Windows、Mac 和 iOS 上,我用来添加“点赞”反应的按钮对屏幕阅读器而言没有任何标签。

我是盲人,因此不使用鼠标。此外,title 属性本身对于触控交互来说就存在问题,因为通常没有简单的方法来触发鼠标悬停。

希望这能有所帮助……

为明确起见,我指的是按钮 #discourse-reactions-actions-916340 > div > div.discourse-reactions-reaction-button.my-likes > button。该按钮没有 title 或 aria-label,内部仅包含一个被标记为 aria-hidden 的 SVG。即使它未被隐藏,该 SVG 及其子元素也不包含任何屏幕阅读器可利用的信息。因此,解决方案如下:

  1. 为该按钮添加一个 aria-label,内容类似“点赞此帖子”或“使用点赞反应”等。由于未来可能会增加更多反应类型,因此措辞必须明确指出正在添加的是哪种反应。
  2. 显示计数值的元素 #discourse-reactions-counter-916340 应提供更清晰的信息,说明具体是谁使用了哪种反应。我不确定视力正常者如何获取这些信息(例如点击该数字后是否会弹出某个窗口),但这一功能也必须对屏幕阅读器和键盘用户可访问。
  3. 如果未来要添加其他反应类型,它们也必须不仅对鼠标可用,还要对触控、键盘和屏幕阅读器可访问。

目前,至少对我来说,该小部件似乎仅支持“点赞”反应。

抱歉发了多条消息,但这表明有时要找到问题根源需要多么细致。当前,非本人帖子的 title 属性位于实际“点赞”按钮的父级 div 上。然而,为了让屏幕阅读器能够识别,title 必须直接设置在按钮元素上。屏幕阅读器不会从任意元素中读取 title 属性。过去 25 年中,这一特性已被过度滥用,导致无法泛化适用。因此,如果您将 title 属性移动到 <button> 子元素上,屏幕阅读器就能正确识别它。

1 个赞

感谢 @MarcoZehe 指出你需要标题的确切位置。
我已在此处提交了一个拉取请求(PR),将解决你的问题。

@MarcoZehe,该 PR 现已合并,你可以拉取最新的插件并试用。

谢谢!我会等待该实例拉取插件的最新代码。我并没有运行自己的 Discourse 实例,因此无法将插件拉取到任何地方。感谢您快速的修复!

4 个赞

非常感谢,Marco。

我刚刚重新部署了反应功能(大约 15 分钟后生效)。

如果问题已解决,请告诉我们。

3 个赞

@Sam,这个问题在我看来肯定已经解决了。谢谢!

4 个赞

非常感谢你,Marco,帮忙测试!

2 个赞