Javascript NVDA没有在单个网页上读取多个aria live标记。

Javascript NVDA没有在单个网页上读取多个aria live标记。,javascript,html,reactjs,wai-aria,Javascript,Html,Reactjs,Wai Aria,我在一个网页上使用多个aria live标记,当网页上显示错误时,NVDA只读取第一条错误消息,而不是全部。 我有用户aria live=assertive也尝试过aria live=little但不起作用,有人能提供一些解决方案吗。 下面是我的代码: <div> <input type="text" name="username" tabIndex="0"/> <span class="usernameerr" role="aler

我在一个网页上使用多个aria live标记,当网页上显示错误时,NVDA只读取第一条错误消息,而不是全部。 我有用户aria live=assertive也尝试过aria live=little但不起作用,有人能提供一些解决方案吗。 下面是我的代码:

<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>
非常感谢您的帮助。

如果您有role=alert,则意味着aria live=assertive。当您使用aria live=assertive时,屏幕阅读器可能会清除队列中的挂起消息。因此,如果你有三个自信的区域,它们可能会相互攻击,清除其他信息。最后一个可能会赢

看。它说,用户代理或辅助技术可以选择在发生断言性更改时清除排队的更改


因此,您可能会听到一个屏幕阅读器的问题,而不是另一个。您可以通过删除role=alert并将aria live更改为little来测试它。您说过您曾尝试使用aria live=Little,但如果您没有删除警报角色,那么它仍然会很自信。

尝试删除角色=alert并添加aria live=Little,但没有阅读任何标签。只有当存在role=alert时,才只有NVDA读取第一个事件。此外,仅使用aria live=assertive也无法读取。同样的问题一直存在于我身上,在chrome浏览器中使用aria live=politive并使用NVDA运行时,它无法工作。有人能帮我解决这个问题吗?在过去,chrome没有完全支持aria live,所以它可能是一个浏览器错误。当我过去在chrome上测试时,一个版本可以工作,而下一个版本不行。这是不一致的。Chrome通常不是屏幕阅读器的高优先级平台。许多公司用Internet Explorer测试JAWS,用Firefox测试NVDA,在iOS和Mac上测试Voiceover。您当然可以在chrome上测试JAWS和NVDA,但如果有问题,请确保在其他浏览器/AT组合上进行测试,因为您的代码可能是正确的,chrome可能是错误的。一个有用的链接: