Internet explorer JAWS仅在IE中读取“aria live”区域内DOM节点的删除

Internet explorer JAWS仅在IE中读取“aria live”区域内DOM节点的删除,internet-explorer,accessibility,internet-explorer-11,wai-aria,jaws-screen-reader,Internet Explorer,Accessibility,Internet Explorer 11,Wai Aria,Jaws Screen Reader,现场区域为: <div aria-live='assertive' id='abc'> </div> 在JavaScript中,我做的第一个更改是 document.getElementById("abc").innerHTML="<span>Processing</span>"; document.getElementById(“abc”).innerHTML=“处理”; 接下来,我做另一个更改: document.getElement

现场区域为:

<div aria-live='assertive' id='abc'> </div>

在JavaScript中,我做的第一个更改是

document.getElementById("abc").innerHTML="<span>Processing</span>";
document.getElementById(“abc”).innerHTML=“处理”;
接下来,我做另一个更改:

document.getElementById("abc").innerHTML="<span>Done</span>";
document.getElementById(“abc”).innerHTML=“完成”;
JAWS在Firefox中没有问题,可以读取“正在处理”和“完成”。但是IE读到“处理-删除处理完成”


我知道我正在用新的
替换
。但是我如何让JAWS忽略删除更新?

要理解IE中的这个错误,您必须查看文档中的
aria相关属性,该属性指定了您希望向屏幕阅读器通知哪些更改

请参阅Microsoft文档中的以下页面:

在您的情况下,IE认为(错误地)您正在进行文本更新(因为使用了被视为字符串的
innerHTML
),因此它会通知删除和添加:

更新仅在添加节点时发布,或在添加或删除文本时发布


解决方案应该是使用
addChild()
removeChild()
函数添加或删除。

我在IE中成功克服此错误的唯一方法是隐藏要删除的元素,添加新元素,然后删除隐藏的元素。

默认情况下,aria relevant设置为additions。这是IEB中的一个错误,这里指定了默认值(添加文本),我看不出有什么意义。如果
aria-relevant
默认设置为
additions
,显然不会宣布删除。指向指定MSDN文档已经指定的“添加文本”的文档不会提供任何额外信息。这里的错误是Internet Explorer将调用innerHTML视为文本修改。在jQuery中使用addChild()和removeChild()或append()将得到预期的结果?您提供的两个链接都使用jQuery,没有人对此有任何问题。在您的答案下查看我的评论。您是否测试过使用jQuery.append()修复您在评论中声称的问题?谢谢!这很有帮助。我明白了,仅仅隐藏上一个跨度就足够了。我不需要删除它,因为我用我的新内容替换了整个innerHTML(完成)。您提供的两个文件都没有使用这种技术。第一个并没有隐藏任何东西。第二种方法是使用不同的区域来处理另一个问题,如源代码中所述:“这是为了避免浏览器中的错误,如果这些错误过于重复,浏览器将停止向同一个div发布更新。”您是对的,这些示例没有实现这一技术,但正如@KannarKK所确认的,这项技术确实解决了这个问题,因为您不再使用innerHTML方法(IE将其解释为文本修改)。