如何让JAWS更新其aria隐藏值的缓存



我有一个Web应用程序,我们在其中动态切换某些元素上的aria隐藏属性以响应用户输入。这在VoiceOver中似乎很有效,但在JAWS中显然失败得很惨。当我将值设置为true,然后又设置为false时,JAWS显然没有意识到这些元素不应该再被隐藏,因此拒绝导航到它们。

我整理了一个琐碎的jsbin示例来展示我正在做的事情。有没有更好的方法可以做到这一点,或者在清除aria隐藏标志以说服JAWS重新加载其状态时需要做其他事情?

此示例的工作原理如下:

  • 开始时,可以使用B键在两个按钮之间导航,然后返回顶部
  • 当你按下标记为"切换隐藏状态"的按钮时,它会将另一个按钮上的咏叹调隐藏标志在true和完全不存在之间更改
  • 按下一次后,使用B键报告页面上现在只有一个按钮,这是一个功能
  • 然而,当我第二次按下它时,JAWS仍然看不到该按钮

在我看来(通过使用Chrome开发工具)DOM元素已正确更新。我认为,由于状态是通过Javascript而不是重新加载页面来更改的,这让JAWS引擎感到困惑,但我不确定如何超越这一点。任何帮助都将不胜感激。

JSBin示例

JAWS生成DOM的XML表示,用于虚拟光标导航。有时,这种XML表示不会像页面更新那样频繁地更新(这取决于本地JAWS脚本中的事件挂钩是否在页面加载和页面更新事件时触发)。

有一种手动更新JAWS虚拟DOM的方法:Insert+Escape。这将执行屏幕刷新,并应使用最新的aria-hidden属性值更新虚拟文档XML。

另一种选择是编写一个JAWS脚本来监视DOM的更改,尽管该解决方案将特定于您的web应用程序或网页。

相关内容

  • 没有找到相关文章

最新更新