是否有关于屏幕阅读器应如何操作的文档?

Is there any documentation on how screen readers should act?

我正在审查并向 changes/fixes 推荐一个小型 Web 应用程序,该应用程序最近经过增强以更易于访问。

我 运行 一直关注的问题是,似乎没有任何内容详细说明屏幕阅读器应该(甚至是)如何工作。

例如,如果您查看 TabPanel 的 Accessible Rich Internet Applications (WAI-ARIA) 1.0 规范和创作实践指南陈述了基本定义及其工作原理,但并没有真正回答 "should the screenreader speak the contents of the TabPanel when it becomes visible?" 这样的问题

这个例子是有问题的,因为我需要说服业务需求它不应该被说出来,但实际上并没有说任何一种方式。 (我能做的最好的事情就是指出创作实践指南中的示例没有说出来。)

为此,以及其他六个问题,如果有一个说明 "This is what a screen reader does (or should do) when it encounters this element/role."

的指南,那就太好了

存在吗?

这听起来像是一个意见答案,但我认为没有可靠的文档 - 主要是因为每个辅助功能用户对其屏幕阅读器都有特定的要求。有些不需要大声朗读文字,而有些则需要。有些人对说出来的内容有选择性的偏好。您甚至可以更改大声朗读文本的速度。

由于所有主要的屏幕阅读器都高度可定制到极其微小的细节,这都是经销商的选择。

但是,通过为开发人员制定标准和要求来遵循并生成一致的应用程序,它允许屏幕阅读器以一致的方式解释信息,以便用户获得最佳体验。屏幕阅读器如何传递这种体验完全取决于用户。

请注意,我已将我的回答直接针对屏幕阅读器,不是典型的WCAG/ARIA指南,这些指南广泛可用且足够具体以实现您的目标作为开发人员需要。

有一些非常简单的原则:

  1. 屏幕readers将默认以DOM的顺序从头到尾开始阅读页面。这之前会有一些页面的基本统计信息,例如标题和链接数、标题等。但是用户通常不会简单地让屏幕 reader 完全阅读整个页面,并且会中断阅读以开始导航
  2. 如果用户知道该页面,他们将选择一种方式来导航到他们在该页面上知道的内容。常见的导航机制是通过标题、表单、地标、链接、表格等。如果用户不知道该页面,他们可能会使用不同的策略进行导航和探索,类似于有视力的用户用眼睛扫描页面的方式。
  3. 当用户导航时,他们会移动虚拟光标。通常焦点将跟随此光标从可聚焦元素跳到可聚焦元素,因为它们是遇到的(这是可配置的)。屏幕 reader 将读出用户导航时遇到的任何内容。这类似于视力正常的用户扫描页面以查找要阅读的内容。这里的关键是用户需要通过导航来控制读出的内容。对此的一个警告是,如果用户激活一个控件导致页面的某些其他部分被更新并且有视力的用户希望知道它已立即更新或知道它的值,那么应用程序应该使用ARIA-LIVE.

您会注意到,最后一点是从技术可访问性到可用性领域的交叉点。下面是新手掌握的一些常见mis-conceptions

  1. 您需要使屏幕的所有选项卡都可聚焦readers:不,您不需要,屏幕 reader 可以看到所有内容而无需选项卡可聚焦,
  2. 您需要宣布页面的每次更新:不,您不需要。如果用户正在与选项卡交互,他们通过经验知道,选择选项卡将显示其内容,并且有键盘命令可以访问该内容。您甚至不需要告诉他们选项卡已显示,您只需更新选项卡的选定状态。
  3. 您不需要公布任何内容:不,您需要决定哪些信息重要到足以自动公布。例如,如果您正在实现一个聊天应用程序,如果用户必须四处导航才能听到来自她的朋友的消息,那将是愚蠢的。这些应该会自动宣布。

我强烈建议您将盲人 reader 用户带入您的组织,让他们向您的高管展示他们如何做事来说明这些要点。

  1. UAAG

您必须查看用户代理可访问性指南 (UAAG): http://www.w3.org/TR/UAAG20-Reference/

它们不是为了定义屏幕reader 可以做什么,而是为了辅助技术必须向用户代理提供哪些信息。

例如,将焦点放在选项卡面板上,您可以阅读以下几点:

  • 2.1.4 将选择与激活分开
  • 3.3.1 避免不可预测的焦点
  • 准则 4.1 - 促进对辅助技术的编程访问
  • 5.1.1 遵守WCAG

    1. WCAG

WCAG 定义了 Web 开发人员应该如何使他的内容无障碍访问。它不会告诉您屏幕-reader 将如何反应,而是您应该如何行动以提供所需的信息。

例如,焦点不必触发上下文的改变 http://www.w3.org/TR/2015/NOTE-WCAG20-TECHS-20150226/G107 但只要用户要求更改上下文,就可以了。

然后焦点的位置将定义要读取的数据,但 aria 实时区域除外。

  1. 重要:辅助功能和屏幕reader是两个不同的东西

您无法将辅助功能政策恢复到仅屏幕reader。

而且您不会找到仅针对屏幕的指南reader。他们是为了不忘记所有残疾人的通用方式。

话虽这么说, 屏幕reader 会以最可预测的方式选择它的行为方式。您唯一可能做的就是测试您的应用程序是否符合逻辑的做事方式。如果 screenreader 不正常,则可能是一种误解,可以在您的代码或辅助技术中进行改进。