我们有一个带有多个相关下拉列表的模态对话框,选择该值 在一个下拉列表中重新填充依赖的下拉动态。
由于这种行为,只要重新填充任何下拉选项,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
如果需要进一步的详细信息,请告诉我们,我们将非常感谢您的帮助。
答案 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在重新填充依赖的下拉列表时正确读取模态