ARIA 屏幕阅读器实现指南

实时区域

这只是一个指南。实时区域标记是一个相对开放于解释的复杂领域。以下旨在提供实现指导,以尊重屏幕阅读器开发者尝试不同方法的需求。其目的是在提供有关如何使用标记的预期含义的有用指导的同时,支持实时区域作为屏幕阅读器创新和竞争的领域之间达成平衡。

解释 WAI-ARIA 实时区域标记

  1. 实时更改是提示:一般情况下,实时区域标记是由作者提供的提示,辅助技术可以允许全局、站点甚至区域特定的设置,以及启发式方法来帮助处理没有 WAI-ARIA 提示的页面上的实时更改。
  2. 可选择地,如果用户配置了第二个硬件通道,则创建第二个额外的队列:如果有两个用于呈现的通道(例如文本到语音和点字显示),则可以维护两个队列以实现并行呈现。通道可以根据角色或礼貌度进行用户配置,用于呈现实时区域。
  3. 忙碌区域:在带有 aria-busy="true" 标记的区域中的任何更改都不应在清除该属性之前添加到队列中。
  4. 礼貌度(aria-live 或来源于角色)优先级最高:根据 aria-live 属性或从角色继承的礼貌度级别将项目添加到队列中(例如,role="log" 默认为礼貌)。断言项目优先于礼貌度级别。另外,实现可能选择清除更礼貌的项目,例如,断言项目会清除队列中的任何礼貌项目。
  5. 时间次之:根据事件发生的时间顺序(较早的事件优先),对具有相同礼貌度级别的项目进行排序。按照最先出现的顺序排列相同礼貌等级的项目。
  6. 具有多个更改的原子(aria-atomic="true")区域不应重复呈现相同的内容。当一个原子区域的新事件被添加到队列中时,就会移除同一区域的早期事件。可能希望在呈现原子区域更改之前至少有一个微小的超时,以避免在彼此之后快速发生的两个更改中两次呈现该区域。
  7. 在呈现更改时包括标签:如果更改发生在具有某种语义标签的内容中,请朗读标签。这对于数据单元格中的更改尤其重要,其中列和行标题提供了重要的上下文信息。

设置和启发式方法的想法

  1. 允许使用不同的语音(在文本到语音中)或其他不同的呈现特征来区分实时更改。
  2. 当没有 WAI-ARIA 标记时,除非用户将所有实时更改配置为关闭,否则自动呈现一些更改。例如,在用户自己的输入的上下文中自动朗读由用户输入引起的更改。
  3. 允许进行全局设置,以关闭显示实时更改、显示所有实时更改、使用标记或使用“智能模式”(使用启发式方法)。