JAWS可访问性问题 - 在Internet Explorer中对实时区域进行多次读取

时间:2015-03-11 06:24:21

标签: internet-explorer accessibility jaws-screen-reader

我们有一个带有多个相关下拉列表的模态对话框,选择该值 在一个下拉列表中重新填充依赖的下拉动态。

由于这种行为,只要重新填充任何下拉选项,JAWS就会再次读取所有字段。

示例,虚拟标记

<div role="dialog">
   <div>
      <select id = "one">
        <option value="0">A</option>
        <option value="1">B</option>
        <option value="2">C</option>
      </select>
   </div>

   <div aria-live="polite">
      <select id = "two">
        <!-- dynamically populated options -->
        <option value="1">BC</option>
      </select>
   </div>

   <div aria-live="polite">
      <select id = "three">
        <!-- dynamically populated options -->
         <option value="1">BD</option>
      </select>
   </div>
</div>

选择下拉列表中的值&#34;一个&#34;在下拉列表中填充选项&#34;两个&#34;同样下拉&#34;三&#34;取决于下拉值&#34;两个&#34;。

Jaws在Chrome和Firefox中正确读取所有字段,但是在Internet Explorer 11中,只要重新填充任何下拉选项,它就会从开头读取字段。

其他细节 大白鲨版 - 15 使用角度ui模态对话框 只要对话框的dom中有任何更新,浏览器就会从开头读取。

更新 - 这里是plnkr - http://plnkr.co/edit/A2mcE2TfFavNEIlnFuPY?p=preview

如果需要进一步的详细信息,请告诉我们,我们将非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

ARIA直播区域旨在读取其所在元素的可见(即不显示:无)内容的更新。您的HTML标记在IE11中使用JAWS正常工作。浏览器和辅助技术之间ARIA live的实现存在很多差异,导致您看到的差异。

aria-live =“polite”的默认行为是让AT读出该区域的所有添加内容。在上面的代码中,这意味着它应该读出你填充的所有选项。

当模型或范围内的某些内容发生变化时,Angular.js有时会重新填充区域的整个DOM,并且当节点插入到文档中时,某些AT会宣布aria实时区域。

我不清楚你的代码试图实现什么,JAWS的意思是在Chrome和Firefox中正确读取字段。如果你能描述你想要的结果,我可以提供更多的指导。

答案 1 :(得分:0)

显然IE在[role =“dialog”]属性方面存在一些问题,如果我们在更改“首次下拉”的选定值时从模态对话框中删除此属性,则问题将得到解决。

基本上是onChange的第一个选择,我找到了带有role =“dialog”的元素并删除了属性“role”。这以某种方式解决了这个问题 并且JAWS在重新填充依赖的下拉列表时正确读取模态