我正在为我的移动应用程序使用Chrome Vox屏幕阅读器。此阅读器会读取所有包含role="alert"
的错误范围标记,我希望屏幕阅读器只读取第一个错误(role =' alert')。例如,我们可以看到Gmail帐户注册页面。我该如何实现这种情况?
答案 0 :(得分:0)
如果你在错误的每个输入旁边放置跨度,那么这些不应该是role = alert而是ID。然后输入会想要aria-describedby =那个ID。您可能希望有一条消息警告,指出存在错误,并且要么关注那里,要么关注第一个与错误相关的输入,选择等等。
如果你想要一个表格顶部的错误框,并想要一个摘要,你可以把重点放在错误上,并制作一个指向输入的锚点(文本解释错误)。这不需要警报角色。
如果您只是想提醒用户有错误,可以在带有role = alert和aria-live = assertive的容器中输入一个短语,然后关注第一个输入错误。
答案 1 :(得分:0)
我必须解决相同的问题,最好的解决方案是根本不使用role=alert
作为错误消息。相反,对可以验证的元素使用aria-describedby
,并将其指向包含错误消息的范围。
这将确保读取焦点元素的错误消息。
与警报相比,此方法对用户更友好,因为不会立即读取错误消息(如问题所述),这可能会造成混淆。而是在浏览页面时读取焦点所在元素的错误消息。
示例:
<div>
<input type="text"
name="username"
id="username"
aria-describedby="username_error"
aria-invalid="true"/>
<span class="error" id="username_error">Username is unknown</span>
</div>
更多提示:
aria-invalid=true
属性,向屏幕阅读器提示元素包含错误aria-describedby