JAWS 仅在 IE 中读取“aria-live”区域内 DOM 节点的删除
JAWS reads removal of DOM node within an `aria-live` region only in IE
直播区域是:
<div aria-live='assertive' id='abc'> </div>
在JavaScript中,我做的第一个改变是
document.getElementById("abc").innerHTML="<span>Processing</span>";
接下来,我再做一个改动:
document.getElementById("abc").innerHTML="<span>Done</span>";
JAWS 在 Firefox 中没有问题,可以读取 "Processing" 和 "Done"。但是 IE 读取 "Processing Removing Processing Done"
我知道我要用新的 <span>
替换 <span>
。但是,如何让 JAWS 忽略提供删除更新?
要了解 IE 中的这个错误,您必须查看 aria-relevant
属性的文档,该属性指定了您希望屏幕阅读器收到通知的更改。
请参阅 Microsoft 文档中的以下页面:aria-relevant attribute
在你的情况下,IE 认为(错误地)你正在做文本更新(因为使用 innerHTML
被认为是一个字符串),所以它通知删除和添加:
Updates are announced only as nodes are added, or as text is added or removed.
解决方案应该是使用 addChild()
和 removeChild()
函数添加或删除。
我在 IE 中成功克服这个错误的唯一方法是隐藏被删除的元素,添加新元素,然后再删除隐藏的元素。
直播区域是:
<div aria-live='assertive' id='abc'> </div>
在JavaScript中,我做的第一个改变是
document.getElementById("abc").innerHTML="<span>Processing</span>";
接下来,我再做一个改动:
document.getElementById("abc").innerHTML="<span>Done</span>";
JAWS 在 Firefox 中没有问题,可以读取 "Processing" 和 "Done"。但是 IE 读取 "Processing Removing Processing Done"
我知道我要用新的 <span>
替换 <span>
。但是,如何让 JAWS 忽略提供删除更新?
要了解 IE 中的这个错误,您必须查看 aria-relevant
属性的文档,该属性指定了您希望屏幕阅读器收到通知的更改。
请参阅 Microsoft 文档中的以下页面:aria-relevant attribute
在你的情况下,IE 认为(错误地)你正在做文本更新(因为使用 innerHTML
被认为是一个字符串),所以它通知删除和添加:
Updates are announced only as nodes are added, or as text is added or removed.
解决方案应该是使用 addChild()
和 removeChild()
函数添加或删除。
我在 IE 中成功克服这个错误的唯一方法是隐藏被删除的元素,添加新元素,然后再删除隐藏的元素。