当然,我们很感谢您的提议!如果您发现任何容易改进的地方,能否提供具体细节?我们正在进行的许多无障碍功能改进需要重构应用程序,但我们始终欢迎任何“低垂的果实”(即容易实现的改进)。
以下是一个列表,除第一项外,其余并无特定顺序:
-
您有一些模态框无法获取焦点,这正是我最初发布此帖的原因。任何来此线程提供屏幕阅读器使用反馈的人都会遇到这类模态框,这意味着基础或中级屏幕阅读器用户会被过滤掉。幸运的是,我在自己的论坛上没有遇到过这种情况,只在这里遇到了。希望有办法关闭这些模态框,或者至少关闭导致其出现的条件。与这些模态框交互的唯一方式是困惑于为何键盘命令不起作用,并了解足够的网页应用知识以想到去查找模态框。然后,一旦找到它,您必须与它交互并将焦点导航到正确的控件。即便如此,它也不总是可靠,正如我在回复此主题时遇到的困难所表现的那样。
-
当我点击一个主题时,键盘焦点不会自动移动到最新帖子。我不确定这里应该发生什么,也许我需要点击不同的链接来实现这一点?因此,跟踪新帖子很困难,我仍然必须手动完成。
-
似乎没有通过键盘访问我的网站管理区域的方法。我不得不猜测
/admin可能作为 URL 有效,幸运的是它确实有效。 -
论坛帖子中的 ARIA 地标会很有用。本质上,将每个帖子设为类似
<article/>的结构,顶部控件使用<heading/>,底部使用<footer/>。这样可以实现更快的地标导航,因为目前缺乏在帖子之间快速移动的有效方法。我现在可以通过 NVDA 大致做到这一点,但这样做会将我置于包含“点赞”和其他按钮的<nav/>区域。如果实际的地标元素不起作用,使用role=属性也可以。 -
如果我点击“主题操作”按钮,则无法通过键盘关闭出现的菜单。
-
您的列表小部件在无障碍方面简直是灾难。我刚刚尝试用 NVDA 移动一个帖子。以下是我的操作步骤:
- 点击“编辑标题/类别”按钮。我不太记得它的确切名称,因为同样,我无法折叠屏幕以重新显示该按钮。
- 找到类别组合框。
- 用空格键激活它。
- 使用 NVDA 对象导航放大到选中的组合框项,这完全不符合直觉。
- 在该项中,有一个列表。我与之交互。
- 在该列表中,有一个搜索字段和另一个列表。我与之交互。
- 然后,我通过 NVDA 对象导航浏览看似许多类别描述的内容,直到找到我想要的。我将鼠标路由到该位置。
- 我用 NVDA 点击鼠标。
- 我怀疑还有另一步,即找到并点击一个未标记的“保存”按钮,但我不确定,下次必须这样做时肯定记不住。

如您所想,这并不直观,我之所以发现这一点,是因为:a) 我可能是中级 NVDA 用户;b) 我从事网页开发等工作;c) 我大致了解了 Discourse 的运作方式。
-
存在各种未标记的图形,它们未被识别为按钮,但似乎具有某种功能。我认为管理员屏幕中的“保存”按钮就是一个例子。我有点犹豫在依赖用户使用的实时网站上随意点击未标记的按钮。这类事情很可能会在某天让我付出惨痛代价。

我大概会给它一个月的时间,然后我会在服务器上部署 PHPBB 或其他更无障碍的解决方案,并继续使用那个。抱歉,由于这些问题,很多人甚至没有尝试这个社区。鉴于那个损坏的模态框几乎是我遇到的第一个障碍,我可能不得不像我们盲人经常做的那样,选择技术上较差但无障碍性更好的选项。
我不是想抱怨,我只是希望我的社区选择不是:一些无障碍但社区较小、开发较少的选项,一个功能强大但存在重大无障碍问题的选项,以及邮件列表。
顺便一提,我是一名高级开发人员,可受雇提供帮助。坦率地说,Discourse 在互联网上占据如此重要的地位,以至于我们许多残障人士不得不勉强应对这些无障碍问题,尤其是当我们的善意健全同事为项目设置 Discourse 时。我理解他们为什么这么做,因为我也非常希望为我们的社区使用它,而且你们创造的产品在管理方面确实极其简便。但是,如果您没有专门的无障碍负责人来修复当前的问题并确保所有新功能对残障人士可用,那我们就谈谈吧,因为您迫切需要这样的人。
我之所以在这里尝试 Discourse,是因为从这个线程中我得出印象,重大的无障碍改进即将发生。但总体而言,只要我有发言权,我就会积极劝阻使用 Discourse,因为它与屏幕阅读器的配合使用非常困难,而且我不想创建另一个因无障碍问题导致我们盲人无法平等参与的互联网社区。我很乐意改变这一现状,并参与其中。但如果不是我,那么请聘请一位专家,因为许多这些问题已经存在多年,且没有发生任何显著变化。
谢谢。
哇!感谢您如此详细和全面的反馈!
抱歉,我不太明白。我不清楚在访问主题时会出现任何模态框?您是指撰写主题回复时使用的编辑器/创作器(我目前正在其中输入)吗?还是指在主题中点击“回复”按钮后出现的编辑器?
由于这是首要且最紧急的问题,我想先弄清楚。我们不妨一步步来,从最重要的问题开始。毕竟我们之前曾有过视障用户,并根据他们的反馈采取了行动——例如这里:
以及这里:
也许最近出现了回归?我想弄清楚您提到的这个“模态框”究竟是什么。
(另外,您是否尝试过按 ? 来获取键盘快捷键列表?我最近在调查“如何通过键盘进入管理区域”时注意到,按 = 可以打开汉堡菜单,但其中没有任何选项被选中,cc @sam —— 我们确实应该修复这个问题。)
你好,@ndarilek 在这里。
看来我在这个平台还有另一个账号,没意识到自己现在有两个了。也许这就是为什么我二月尝试注册时邮箱地址无法使用的原因。以下是关于我在注册时遇到的弹窗问题的首帖引用。请注意,该帖子中列出了若干问题,其中一些可能与我在此列出的问题重复。我认为我的部分挫败感源于反复提出这些问题,却不知该去哪里确保:a) 问题已被接收,以及 b) 你们已掌握所需信息。这些弹窗尤其成问题,因为:a) 对于屏幕阅读器用户来说难以定位,b) 它们会阻止所有输入到达页面,因此突然间 Discourse 在点击链接或按钮时拒绝执行任何操作。无论如何,以下是引用内容——我不确定引用语法是否正确:
• 虽然与我的站点无关,但这里的弹窗注册体验存在一些挑战。我尝试通过邮箱注册,但你们的实例拒绝了我的 .info 邮箱地址,这个地址我已使用了近 17 年,且在我自己的站点上一直正常工作。随后我通过 Google 注册,但返回时出现的弹窗带来了一些问题:
◦ 它没有获取键盘焦点,因此我必须手动寻找并与之交互。
◦ 在我尝试操作时,无限滚动的主题列表不断添加新主题,使得焦点更难真正到达对话框。我不记得自己究竟是如何比主题出现得更快完成操作的——毕竟还没喝咖啡呢——但我已经在这里了。![]()
谢谢,希望这些信息有所帮助。
好的,我完全理解您的意思,但我仍在努力弄清楚这具体指的是什么:
您是指编辑器吗?也就是 Discourse 中用于编辑的覆盖面板?我想您指的应该是它吧?这确实不是一个模态框,而是一个覆盖面板,它会一直伴随您,停靠在浏览器底部,并随着您在 Discourse 站点中导航而“随行”。您可以将编辑器折叠为单行摘要,也可以根据需要将其扩展为全屏。在此期间,您仍然可以继续阅读 Discourse 中的主题——甚至可以导航到完全不同的主题——同时撰写您的回复。这符合 Discourse“尽可能鼓励阅读”的理念,因为您可以继续阅读和浏览站点,您的阅读体验不会因编辑器而中断,因为它是一个停靠在浏览器窗口底部的覆盖面板。
编辑器左下角有两个主要操作按钮:
- 回复 (Reply) —— 这将关闭编辑器覆盖面板,并将您的回复提交给该主题(如果您已离开原始主题,则提交给其他主题)。
- 取消 (Cancel) —— 这将关闭编辑器覆盖面板,并将正在进行的回复保存为草稿,或者放弃该草稿。
编辑器还有几个其他功能区域:
- 编辑器顶部的“抓手” (grab bar),您可以借此控制覆盖面板的高度,并上下调整。
- 左上角的“编辑器类型”按钮,允许您在回复、私信或引用原始帖子的新主题之间切换。
- 右上角的“扩展至全屏”图标按钮。
- 右上角的“折叠”图标按钮。
- 右下角的“隐藏预览”图标按钮。双击此按钮可再次显示预览。
当您点击回复按钮时,编辑器绝对应该获取焦点,例如:“我正在对此帖子进行回复。”在我的测试中(无论是在台式机、笔记本电脑、平板电脑还是手机上),情况确实如此。当您在主题上或任何单个帖子上点击回复按钮时,它会切换到键盘输入并获取焦点。
抱歉这项工作可能需要一些时间才能完成。我们确实想去做,只是目前工作量巨大,而工程人员的时间有限。此外, ongoing 的全球大流行病对我们许多人造成了不利影响,团队中也有多人感染了 COVID。我表示歉意;我能说的最好的话是:我们会优先处理最重要的问题,并尽最大努力解决它们。
(重读这段文字,您指的难道是账户注册流程吗?有可能我们在 2.7 版本中增强了注册对话框的同时,在无障碍访问方面出现了回归?)
啊哈!_终于_有个我真正能理解并复现的问题了。@sam 我明白这里是怎么回事了……进入编辑器,在编辑器中输入一些文本以触发保存草稿的提示……按两次 Tab 键将焦点移到“取消”按钮上,然后按 Enter 键。此时该对话框本应获得焦点,但实际上没有——当我按 Tab 键时,焦点却到了其他元素上。我们应该修复这个问题并回溯到旧版本。
以下是我对此的看法。
我其实有点犹豫。我在 Linux 系统上使用 Orca(内置的屏幕阅读器),至少在我的机器上,它在表格导航方面存在严重不足。
我的主要问题有两个方面:
首先,我不知道自己在讨论串中的位置,因为无法轻松追踪各个帖子。我无法直接跳转到讨论串中的下一个帖子,而是必须滚动跳过所有“回复”、“加入书签”、“分享链接”等按钮,才能到达新帖子。
对我来说,布局简直是一团糟,到处都是按钮和链接。如果能有标题的话,比如将顶部栏设为标题 1,将主题中的第一个帖子设为标题 2,将随后的每个帖子设为标题 3,我就能接受了。这样屏幕阅读器用户就可以快速在各个帖子之间跳转,而不会被分享链接、点赞帖子和加入书签等杂乱元素所困扰。
在我被告诉“哦,你只需要调整这些、这些、这些和这些设置”之前,我要说:不。我不应该为了在系统上使用 Discourse 而去折腾一大堆设置。
Discourse 所做的在纸面上确实很棒,真的很棒。
但为什么我必须穿过成千上万个按钮才能进入一个主题,或者面对成千上万个链接?好吧,我有点夸张了,但请听我说。
这可能是一种主观看法,但我习惯了像基于 PHP 的论坛那样,大多数内容都有标题。所以我想问,缺乏标题是设计上的选择,还是可以通过改进来提升无障碍性的问题?
我建议用 Windows、Mac 和 Linux 的屏幕阅读器进行测试:后两者的内置屏幕阅读器,以及 NVDA(可在 NVaccess.org 找到)和 Jaws(您可以获取免费演示版来评估 Discourse,因为该软件本身是付费的,价格与 Mac 相当),还有 Windows 内置的 Microsoft Narrator。
至于手机导航?我先暂且不谈,因为我目前手边没有手机可以测试。并非所有屏幕阅读器都以相同方式处理表格。例如,在这个主题中,Orca(对我来说)并未将整个讨论串显示为表格,只显示了以“新活动”开头的那部分,并且完全跳过了主题和回复内容。如果我按标题导航,在到达主题的最开始(这是屏幕阅读器用户常用的导航方式)之后,它会直接跳转到最后一个帖子之后的推荐主题列表,而该列表被标记为标题级别 3。
再次感谢你的报告,@nolan……针对第一个问题,看起来我们在大多数模态窗口上都没有正确获取焦点……这似乎是一个重大的回归问题,我们应该尽快(理想情况下本周内)修复!
我们完全理解这一点。虽然我可以表示我们正在解决无障碍问题……但我们无法在一个月内完成当前的所有待办事项。
是的,关于对话框出现的严重回归问题,真的非常抱歉 @nolan!在深入调查之前,我并没有意识到情况有多糟糕。我们本应该为此推迟发布,这实在太严重了!
谢谢!我今天安装了 NVDA,正在慢慢熟悉您所遇到的问题。
我完全理解大家希望 Discourse 在默认绑定下能合理运行的愿望。我也更加理解了围绕导航问题的挫败感。
我能看出 phpBB 的那些技巧。NVDA 在那方面非常受限,可用的快捷键不多。
标题技巧在 Discourse 上不太可能奏效,因为我们允许用户在帖子中输入自定义标题。例如:
标题 2
标题 3
标题 4
没有“下一篇文章”按钮,我们最好的选项是“下一个区域”,但区域支持相比 JAWS 有些不稳定。我们之前已经有了一个 article 元素,但 NVDA 并未遵循它。
我提交了一个 PR,至少能帮助人们在浏览主题时不那么迷失:
我仍然觉得结构不够理想。例如,向下键会被困住,因为我们的帖子导航中存在嵌套的 double-button。
@eviltrout 正在调查各种对话框的焦点问题,我们将需要再次使用 NVDA 进行测试,以确认我们的修复是否有效。
如果您退出浏览模式,我们有相当全面的键盘快捷键,但我理解大家不愿踏入那个“黑暗角落”的顾虑。问题在于,一旦进入“编辑”模式,您必须退出该模式才能真正阅读内容。
例如:
j → 电脑提示“文章链接已访问”
nvda+space
向下 → 电脑提示“链接 benno”
向下 → 电脑提示"3 月 15 日”
向下 → 电脑开始朗读帖子内容
在我的修复之后,将会有显著改进。
电脑将不再只提示“文章链接已访问”,而是会开始提示“帖子 #6 区域 文章链接已访问”。
这里的改进将是逐步的,但我们非常感激所有的反馈。我们在学习,并将尽最大努力让 Discourse 对盲人群体更加友好。
模态框感觉就像一个整体的马蜂窝。如果模态框处于打开状态,而您因某种原因导航回页面,可能会感到极度困惑。我在想是否有办法向 NVDA 发出信号——嘿,NVDA……这些元素……在模态框打开期间已不存在。我们可以在模态框打开时将它们从 DOM 中移除,但这可能会导致更多的困惑。
关于 Orca(我使用的 Linux 版本,虽然控件有所不同,但功能大体相同)。我可以跳转到下一个地标,但这存在 bug,确实可能会卡在某个地方。既然我一直使用的是其他论坛软件,我该在哪里找到这些键盘快捷键呢?我无法访问 Mac,但在 Linux 上,我可以跳转到帖子中的下一个地标,例如从“点赞”按钮跳到下一个“点赞”按钮,以本主题为例,操作步骤如下:
点击主题
向下滚动到第一个帖子
按 M 键
到达地标后,继续向下
重复上述步骤,直到到达主题末尾。现在,这可能与浏览器有关,我不确定这一点,不过截至目前,我尚未用除默认 Firefox 以外的其他浏览器进行测试。
编辑:好的。这是我刚刚遇到的一个问题。我想在 Mozilla Firefox 中查看我的个人资料,但点击顶部的个人资料/通知链接后,键盘输入被锁定,直到我再次切换到浏览模式。我不确定这是否属于对话框问题的一部分,因为页面表现得好像我想阅读该线程。链接上显示“已展开”,所以我以为那是一个下拉菜单,可以用方向键或鼠标操作,但毫无效果。
你关于 NVDA 不将文章(article)视为区域(region)的观点很有道理。我直到昨天启用其对文章的呈现功能时,才意识到竟然使用了 article 标签,不过这似乎并未改变检测算法。我今天会为此提交一个 NVDA 问题,看看后续进展如何。
另外,我明白标题(headers)可以被插入到消息中。标题导航的目的并非为了对抗这一点,而是为了帮助在 99.99…% 的帖子中(这些帖子不包含额外标题)更好地导航。
我昨天搭建了一个开发环境,将研究如何在 .post-topic 中的某些元素上添加一些 ARIA 角色,以使其更易于操作。
模态框(Modals)确实棘手。这里 是一份实用的指南,应该会有所帮助。关键要点有三点:1) 使用新的 aria-modal 属性来指示模态框应显示,并隐藏其他所有内容;2) 将键盘焦点移动到第一个可聚焦元素;3) 当模态框关闭时,将焦点返回给启动该流程的按钮。希望这能帮到你。
说得有道理,再次为我的脾气不好道歉。我每天需要在 Discord、Element、GitHub、Gitea 以及现在的 Discourse 之间频繁切换以完成工作。每个平台都有其各自的痛点——只是 Discourse 的问题目前特别让我头疼。例如,前一个论坛的一个极端问题用户已经加入,而一位使用高级屏幕阅读器的联合管理员花了半小时也无法成功操作暂停期限的下拉菜单。幸好我对下拉菜单很熟悉,在他造成麻烦之前就已经暂停了他的账户。但我们必须尽快解决这个问题,这样我的管理团队就不需要花费那么多精力进行入职培训了。![]()
很高兴我们正在解决模态框的问题——我对此非常感激。我今天会花些时间看看能否让主题显示更加无障碍。我认为下一个主要问题是无法访问的下拉组件。除了无法暂停用户外,最近还有一位成员无法移动他的主题。这里 提供了一个可访问的列表框示例,或许会有所帮助。这些问题非常普遍,解决它们将带来许多好处。
再次感谢。
我不确定是否应该在文章之外再创建区域,因为这样会略显冗长。
我提出了这个问题,主张 NVDA 应将文章视为区域,以便在导航至下一个/上一个地标时进行识别。希望这能在中期内解决该问题。
同时,我提交了这个拉取请求,为帖子元数据字段添加了一个非可视化的二级标题角色。在我的测试实例中应用此补丁后,即使帖子没有标题,也可以通过 h/H 键在帖子之间跳转。诚然,如果帖子本身包含标题,这种方案就会失效,但作为屏幕阅读器用户,我们早已习惯处理此类混合内容。在 NVDA 将文章视为地标之前,提供一个快速跳转到下一帖的方式,总比引入填充区域要好。
Sam,作为一个想法,是否值得引入一个非视觉分隔符,以绕过帖子中标题的问题?因为标题是可以插入到帖子中的。我读了你的帖子,但不确定是否存在一种跨平台的、不可见但可用于标记帖子边界的方案?
目前,在 Linux 系统的 Orca 屏幕阅读器上,我可以按 1 跳转到一级标题(即线程的开头),然后使用 M(下一个地标)在帖子之间切换。是的,这有些笨拙,但确实可行。因此,我想知道,如果将“帖子 #1”、“帖子 #2”等编号标记为地标,而不是使用可能出现在帖子内容中的标题,从技术和可用性的角度来看是否可行?既然帖子下方的按钮可以被设为地标,为什么帖子编号不能也是地标呢?对我而言,将帖子编号设为地标,与/或替代帖子下方的按钮,是合理的,因为这些按钮可以被论坛管理员选择隐藏(我知道有一个案例已将它们移到了“更多…"菜单下)。
再次向 @nolan 致歉,这次我们犯了严重错误——显然我们在发布前连最基本的键盘测试都没有做,这简直是不可接受的底线失误。这完全是我们的责任,我们搞砸了,说实话,我们对这次的表现感到十分羞愧。哪怕只是最粗略的检查,也能发现取消对话框在键盘操作下完全失效,而我们却带着这个巨大漏洞发布了版本。![]()
我们正在重新评估我们的流程,确保:
-
键盘功能必须按预期工作,这是绝对最低要求;每项功能都必须在断开
鼠标的情况下进行测试,以确保其具备正确的 Tab 键顺序和焦点管理; -
使用 NVDA 时,Discourse 的核心操作应简单直观。
感谢您一直支持我们并督促我们改进。我们正在重构部分流程,以确保我们至少始终具备功能健全、逻辑合理的
键盘导航。我们需要您的帮助,以确定在 NVDA 相关的改进和优化中,哪些是最容易见效的切入点。
非常感谢,我和我的管理团队都很感激!![]()
@Nolan,所以你更希望我回退区域更改,只保留标题更改?还是两者都做?
我乐意尝试各种方案。我确实认为在帖子编号处进行“定位”提示是有价值的。否则,你很难分辨自己是在第 100 楼还是第 3 楼。这能起到定位作用。
@celtichawk 关于标题抑制,我同意 Nolan 的看法:帖子中极少出现标题,因此它通常不会造成干扰。
我们实际上没有任何可用的 #1 锚点,我们唯一的锚点是帖子元数据/帖子正文和帖子按钮。元数据包含用户名/编辑状态/编辑时间,但不包含帖子编号。Nolan 曾尝试将锚点设置在帖子元数据上。
我刚刚注意到,由于缺少标题,导航主题列表非常令人烦恼。
@nolan / @awesomerobot,主题列表中的主题标题应该是 H2 还是 H3?如果不是这样,我们当然可以为主题列表中的主题添加 role="heading"。
你们现在如何使用 NVDA 在主题列表中导航主题?
我刚为“主题操作”添加了一个区域,例如:管理员选项、分享、收藏、标记、回复、跟踪状态。
这是一个非常小的改动,但应该能让回复主题变得更加容易。
我还注意到,在屏幕阅读器上更改主题跟踪状态(从“跟踪”/“关注”等)完全无法正常工作,我将与 @j.jaffeux 讨论可能的修复方案。