ARIA 屏幕阅读器实现者指南
实时区域
这只是一个指南。实时区域标记是一个复杂的领域,在某种程度上存在解释的空间。以下是旨在提供实现指南,这些指南尊重屏幕阅读器开发人员尝试不同事物的需求。其目的是在提供关于如何使用标记预期含义的有用指南的同时,支持实时区域作为屏幕阅读器进行创新和竞争的领域。
解释 WAI-ARIA 实时区域标记
- 实时更改是提示:通常,实时区域标记由作者提供作为提示,辅助技术可能允许全局、网站甚至区域特定的设置,以及帮助在没有 WAI-ARIA 提示的页面上处理实时更改的启发式方法。
- 可选地,如果用户配置了第二个硬件通道,则创建一个第二个附加队列:如果存在两个演示通道(例如,文本转语音和盲文显示器),则可以维护两个队列以允许并行演示。可以根据角色或礼貌用户配置通道,以演示实时区域。
- 繁忙区域:在标记为 aria-busy="true" 的区域中发生的任何更改,都应该在该属性清除之前不会添加到队列中。
- 礼貌(
aria-live
或来自 角色)优先级最高:应根据其礼貌级别从 aria-live 属性添加项目到队列中,或从角色继承(例如,role="log" 默认情况下是礼貌的)。断言项目排在首位,然后是礼貌级别。或者,实现可以选择清除更礼貌的项目,例如,断言项目会清除队列中的任何礼貌项目。 - 时间优先级第二:根据事件发生的顺序优先处理具有相同礼貌级别的项目(较早的事件排在首位)。按照先发生顺序呈现相同礼貌级别的项目。
- 原子(
aria-atomic="true"
)区域发生多次更改时,不应该两次呈现相同内容。当向队列添加原子区域的新事件时,删除该区域的早期事件。在呈现原子区域更改之前,最好至少有一个很短的超时,以避免在两个快速发生的更改后两次呈现该区域。 - 在呈现更改时包含标签:如果更改发生在具有某种语义标签的事物中,请说出该标签。这对于数据单元中的更改尤为重要,因为列和行标题提供了重要的上下文信息。
设置和启发式方法的思路
- 允许使用不同的声音(在文本转语音中)或其他不同的演示特征来区分实时更改。
- 当没有 WAI-ARIA 标记存在时,自动呈现某些更改,除非用户将所有实时更改配置为关闭。例如,作为该输入的上下文的一部分,自动说出由用户自己的输入引起的更改。
- 允许全局设置关闭实时更改的呈现、呈现所有实时更改、使用标记或“智能”(使用启发式方法)