NVDA没有在单个网页上阅读多个咏叹调实时标签。

时间:2018-05-07 11:22:01

标签: javascript html5 reactjs wai-aria

我在网页上使用多个aria-live标签,当网页上显示错误时,NVDA只读取第一条错误消息,而不是全部。 我有用户aria-live ="断言"也尝试过aria-live ="礼貌"但没有工作,任何人都可以为它提供一些解决方案。 下面是我的代码:

<div>
        <input type="text" name="username" tabIndex="0"/>
        <span class="usernameerr" role="alert" aria-live="assertive">Enter User Name</span>
    </div>
    <div>
        <input type="passowrd" name="password" tabIndex="0"/>
        <span class="passworderr" role="alert" aria-live="assertive">Enter Password</span>
    </div>
    <div>
        <input type="text" name="repassword" tabIndex="0"/>
        <span class="repassworderr" role="alert" aria-live="assertive">Renter Password</span>
    </div>
    <div>
        <input type="submit" tabIndex="0"/>
    </div>

帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果您有role=alert,则表示aria-live=assertive。当您拥有aria-live=assertive时,屏幕阅读器可能清除待处理邮件的队列。因此,如果您有三个断言区域,它们可能会相互踩踏并清除其他消息。最后一个可能会赢。

https://www.w3.org/TR/wai-aria-1.1/#aria-live。它说“当发生自信的变化时,用户代理或辅助技术可以选择清除排队的变化。”

所以你可能会听到一个屏幕阅读器而不是另一个屏幕阅读器的问题。您可以通过删除role=alert aria-live更改为polite来对其进行测试。 (您说过您使用aria-live=polite进行了尝试,但如果您没有删除alert角色,那么它仍然是assertive。)