与屏幕阅读器的对话

我们目前最好还是使用 role……我怀疑改用 H2 会破坏 大量 主题。

7 个赞

没问题,PR 已经在准备中了。

这让在 NVDA 上快速浏览主题列表变得更加愉快,只需连续按 h 键即可在各主题间切换。

9 个赞

太遗憾了,h2 或 h3 确实适合用于主题列表。但这艘船恐怕在 8 年前就开走了。

4 个赞

嗯,我对这个新区域的感觉还不太确定。它确实为每篇帖子增加了一点点额外的信息,但我觉得问题不大,而且当你通过箭头浏览时,确实为每篇帖子提供了一些额外的上下文。我假设如果后来发现大家不喜欢,我们可以在以后把它撤回吗?

我猜这些更改在这里已经生效了吧?看起来确实如此,而且它们让浏览主题的体验变得更加愉快。非常感谢你们如此迅速地采取行动!新版本何时会在托管网站上发布?

6 个赞

当我们点击部署按钮时:wink:。您的站点正在部署中,大约 20 分钟后即可上线。

4 个赞

@nolan

我假设,如果后来发现大家不喜欢这个功能,我们可以把它撤回来?

是的,绝对可以。如果视障社区认为这带来的干扰多于帮助,我很乐意将其回滚。

那些向我的屏幕阅读器报告为 HTML <select/> 的下拉菜单几乎完全无法使用。

我们有一个名为 SelectKit 的库,在许多地方都有使用。例如,在选择分类、创建私信时选择用户、以及为话题选择“跟踪状态”(以便您可以表示对关注某个话题感兴趣)时都会用到它。

这个库目前完全不支持 NVDA。我们将投入时间进行改进,但很抱歉地说,这是一项非常复杂的工作,可能需要几周时间。

今天我们又部署了一些修复,我相信您会喜欢。我记得您曾提到很难找到管理界面。

“前往其他话题列表或分类”位于页面顶部,是我们的“综合区域”,包含指向站点设置、管理面板、各分类下的话题列表等内容的链接。@eviltrout 今天早上对此进行了调整,当您展开列表时,焦点会自动移入其中。这显然让 NVDA 更容易识别该区域。

我正在花大量时间了解您的使用体验。今天我还注意到另一个问题:当您发布回复或新话题时,缺乏反馈。您很难判断操作是否成功。我们将尝试至少通过一些焦点技巧来帮助您。我在想,从长远来看,我们是否应该为 Discourse 添加一个“声音”模式,以便在各种操作成功或失败时提供声音反馈。

我们还有很长的路要走,但我对此充满期待。

我的目标——也是 Discourse 的目标——并不是要“和”PHPbb“一样好”。我们想要成为您的首选,因为我们在各个方面都比“旧方式”更优秀。达到这一目标需要一些时间,但我们已经踏上了这段旅程。

11 个赞

我们可以考虑为此使用 aria live 区域;https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Live_Regions。常见的例子是在提交搜索后宣布结果数量,但我们也可以设置一个空的 div,将其标记为 live 区域,并在需要时向其添加一些“回复已发布”的文本。

5 个赞

动态区域看起来很棒,它甚至可能是解决选择套件问题的可行方案。

哦,看起来 role=alert 也能很好地处理我们的各种错误,现在就来添加它!

5 个赞

@nolan 今天又有几项不错的修复和改进。(注意:我所有的测试都在 NVDA 上进行)

  1. 如果您尝试发布内容但长度不足,我们会提供带有 aria 角色的警报,这样屏幕阅读器会告知您具体问题(例如“发布内容过短”等)。

  2. 我改进了“模态框”的焦点逻辑,现在我们将无条件地将焦点移至模态框。这将帮助您发现各种键盘快捷键。相关链接位于“前往其他话题列表或分类”部分。

更改正在立即部署到您的网站。

请告诉我您的想法!

7 个赞

好吧,我可能有点吹毛求疵了。但是话题的排列方式有点奇怪。看起来整行都被标记为标题,而不是各个单独的列。就像我说的,这确实是个非常小的问题,所以我可能只是在吹毛求疵。

2 个赞

哇,这个帖子好像火起来了。我猜开启浏览器通知会阻止邮件——我得看看能不能修复这个问题。

这些改动太棒了!非常感谢!

我也同意话题列表的标题有点奇怪。我觉得如果标题只包含绝对必要的信息会更好,因为如果需要其他内容,我知道去哪里找。

比如看看帖子显示,我添加的 h2 角色只包裹了用户名和发帖时间。这些大概是我按 h/H 键浏览帖子时最关心的信息。对于话题列表,我可能只关心标题,其他都不需要。

Ethin,希望我们指的是同一个问题,而且我准确理解了你的意图。如果我有理解偏差,请告诉我。

5 个赞

另外想指出,@Sam,这并不兼容 Orca。不确定 @Ethindp 能否帮忙排查 Linux 上的 bug 或提供其他帮助,但在我的系统(Ubuntu + Orca + Firefox)上,下拉菜单至少能稍微工作一下。

例如,如果我创建一个主题,可以展开分类下拉菜单并输入分类名称。我可以打开状态选择菜单,但如果展开该菜单,它表现得像一个按钮;我必须“盲目地”(此处为双关语)点击状态菜单,希望它正是我需要的选项。我不太了解 Orca 或 ATSPI 事件,因此无法判断适用于某种屏幕阅读器的方案是否也适用于 Orca,或者是否需要更多工作。

3 个赞

您无法从 Firefox 控制 atspi 事件,因此这不是问题所在。真正的问题在于屏幕阅读器所接收到的角色(role)——如果某个控件表现得像组合框,请使用 ARIA 告知浏览器它是一个组合框。请记住:遵循 ARIA 设计规范,除非您要实现的功能没有对应的设计模式(这种情况应该非常罕见,因为该文档相当全面)。

@nolan 是的,我指的就是这个。通过标题在表格(以及帖子)中进行导航会拖慢我的速度,原因如下:

  1. 所有列都是标题,或多个标题——读起来就像多个标题。例如,它会这样读:主题标题。停顿。主题信息。停顿。主题信息。停顿。依此类推。Orca 与 NVDA 不同,在通过箭头键(或在此情况下使用 h 键)遍历表格时,会朗读整行内容,而不是像 NVDA 那样逐列朗读。

  2. 帖子的情况也类似。所有帖子信息同样是独立的标题,并以上述方式被朗读。

一个解决方案是:如果不会影响视觉布局,将仅包含重要信息的相应列合并为单个标题。(说实话,我并不太喜欢通过标题在表格中导航的方式——这并不符合表格的实际运作方式,标题本来就不应该出现在那里。)

最后一个小小的问题:所有标题似乎都处于同一级别。这会造成困扰,因为屏幕阅读器允许我按不同级别在页面间跳转。由于所有标题级别相同,我无法在主题标题和相关帖子标题之间跳转——我只能依次阅读整个主题内容,这令人感到烦躁,尤其是在帖子数量巨大的主题中。

5 个赞

目前,我们将 ARIA 标题角色应用到了整行。我会将其调整,使其仅应用于必要信息,即大表格的第一列(状态、标题、分类、未读数量等)。

我是否应该更进一步,仅将角色应用于主题标题?我想这样确实能提升速度,前提是你记得左右导航以获取主题状态、分类等信息。

@celtichawk 谢谢!@j.jaffeux 正在寻找一个适用于 JAWS、Orca 和 NVDA 的下拉菜单解决方案。正如我所提到的,这可能需要一点时间,但我们目前正在着手处理,并希望在接下来的几周内能拿出一些成果展示给大家。

@ethindp 我想我对主题中的标题情况有个主意。我们可以将标题角色放在单个元素上,比如“用户名”,然后为其添加一个 aria 描述,例如“Sam 于 3 小时前发布”。那么,我想屏幕阅读器会读出:

“帖子 #3 区域 Sam 于 3 小时前发布”,当你浏览内容时。我们要不要试试这个方案?

9 个赞

我建议试试看。我其实挺喜欢这个主意的。(天哪,模板太棒了!)

4 个赞

嗯,第一列应该就足够了。再试了一下,我喜欢它不仅能读取标题,还能读取未读状态和数量。我想,既然其他内容恰好是最后读出的,我也能接受它按现在的方式读取其余部分。但仅读取第一列更符合我的预期。

5 个赞

你好,Nolan,

我今天本想修改这个,但 TD 元素已经设置了 role 为 “rowheader”。我担心随意改动它会有问题。

我有几个选择:

  1. 更改包含所有关键信息的 TD(表格列)的 role。

  2. link-top-line SPAN 上添加 role,它包含关键信息,但不包括分类和标签。

  3. 我真的很不想这么做,但我们可以添加一个包装用的 DIV

我们应该选择哪个方案?

3 个赞

Claus 还指出了 heading 角色存在的一些怪异问题。我在想,或许我们可以只给“链接”本身赋予 heading 角色。

这样一来:

  • 你不会读到任何关于状态(如锁定、置顶等)的信息
  • 按下 H 键
  • 你会听到话题的标题
  • 再次按下 H 键
  • 你会听到下一个话题的标题

如果你在任何时候想要了解话题的特殊信息或以更丰富的方式与之交互,只需按下上或下箭头键以获取更多信息。

这并非完美的解决方案,但感觉比直接定位到“置顶”链接或朗读整行内容有所改进。

4 个赞

实际上,在论坛中使用表格来展示主题列表是非常非常好的。我所知道的除 Orca 之外的所有屏幕阅读器都能导航表格,因此只要获取正确的行和列信息,就能实现良好的导航。我请求为主题添加标题,是为了获得一种稳定的方式来导航已打开的主题。在我看来,并没有特别充分的理由要在表格中添加标题,但如果处理得当,它们也不会造成问题。
Claus

4 个赞

你好。

我想向本线程中的各位致以大大的感谢。我协助管理几个 Discourse 实例,也注意到了这里提到的大部分问题。直到昨天其中一个论坛更新了,情况才有所好转,而且变得更好了!在此之前,我从未花精力去研究如何解决这些问题。

今天早上看到本线程,让我对未来的持续改进充满希望。

我没有太多具体的建议,因为你们已经涵盖了我遇到的大部分痛点,所以我建议继续沿着这条路走下去。

有一点我觉得可能没人提到,至少在本线程中没有。那就是在帖子中引用他人发言的可访问方式。如果我想引用某人,我通常会这样做:

在此插入引用内容。

但我希望能使用正确的引用方法。我不太熟悉 Markdown,无法直接手写出来,而且即使会写,感觉也挺麻烦的。我很好奇,如果无法使用鼠标,大家在帖子中引用他人时还有哪些其他技巧?

8 个赞