页面加载/表单提交时 Voice Over 未读取断言 aria-live 区域

wor*_*ith 3 accessibility screen-readers voiceover

我在 a 上有一个 aria-live 区域role="alert",其值"assertive"未在表单提交中说出。当时它也是由 PHP 编写的,就像页面加载一样。

它在 PC 上的 NVDA 中运行良好,但在 Mac 上却什么也说不出来。我发誓我之前已经测试过这一点并且经常使用这种技术。

有什么想法为什么不被谈论吗?

div 看起来像这样:

<div class="alert alert-danger" role="alert" aria-live="assertive">Error: please fix the indicated fields:</div>
Run Code Online (Sandbox Code Playgroud)

Que*_*inC 10

众所周知,在页面加载时直接读取 ARIA 实时区域是行不通的,或者对于屏幕阅读器 + 浏览器的某些组合来说并不总是可靠。这是事实:你对此无能为力。

当新的活动区域添加到 DOM 或更新现有活动区域的文本内容时,会读取 ARIA 活动区域。这适用于几乎所有屏幕阅读器+浏览器的组合。但是,对于页面加载时存在的实时区域(是否必须读取)没有明确指定;因此,这取决于屏幕阅读器和浏览器。

知道这一点后,您可以在页面加载后不久通过执行上述两件事之一来触发读取:

  • 让新的活动区域出现在 DOM 中
  • 更改现有活动区域的文本

请注意,如果您添加/更改现有元素的角色和/或 aria-live 属性,它将不起作用。该元素必须是新的,或其文本必须有效更改。