2017-08-22 57 views
0

没有阅读的自信的咏叹调生活区域我有一个role="alert"的咏叹调活的区域与价值"assertive"不是在表单提交说话。当时也是由PHP编写的,就像页面加载一样。在页面加载/表格提交

它可以在个人电脑的NVDA上正常工作,但在Mac上没有任何声音。我发誓我已经测试过,并经常使用这种技术。

任何想法,为什么不说话?

股利如下:

<div class="alert alert-danger" role="alert" aria-live="assertive">Error: please fix the indicated fields:</div> 

回答

1

在页面加载时直接阅读ARIA直播区域是不可行的,或者在屏幕阅读器+浏览器的某些组合中不可靠。 这是一个事实:你无法做任何事情。

将新的活动区域添加到DOM或更新现有活动区域的文本内容时,会读取ARIA活动区域。 这适用于几乎所有屏幕阅读器+浏览器的组合。 但是,如果需要阅读或不阅读,则页面加载时存在的实时代理没有明确规定;所以,这取决于屏幕阅读器和浏览器。

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

  • 创建一个新的生活区域出现在DOM
  • 更改文本现有的直播区域

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

-1

role=alertaria-live="assertive"实际上是相同的(警报意味着自信),虽然这应该不会造成问题本身。

也许您需要使用PHP输出标记,然后使用JS将role="alert"属性添加到它,以便在页面完成加载后触发它发言。

0

aria-live属性本质上将dom元素标记为将会接收更改的内容,并且这些更改应传递给用户。

role =“alert”属性实现了类似的通知,但各种屏幕阅读器的解释不同。当使用role =“alert”时,它有一个隐含的aria-live =“assertive”,所以你不需要两者。

aria-live元素应该在页面加载时位于DOM中,并且应根据需要添加要读取的内容。屏幕阅读器不会总是解析页面以获取其他元素,因此不会被公布。

Chrome vox将不断解析并提取,JAWS通常会选择它,Voiceover和Talkback通常不会以我的体验。配音和对讲按预期工作很大程度上取决于使用正确的浏览器。

QuenticC大部分都是正确的,但是当它们存在于初始页面源中,然后内容稍后添加时,aria-live =“assertive”通告最可靠地工作。当作为一个新元素注入页面时,role =“alert”(通常)效果最好。