1

活区域是读取`咏叹调-live`区域内去除DOM节点的,我做的另一个变化:JAWS只能在IE

document.getElementById("abc").innerHTML="<span>Done</span>"; 

JAWS在Firefox中没有问题,同时读取“处理”和“完成”。但IE读取“处理删除处理完成”

据我所知,我用一个新的<span>替换<span>。但是,我如何让JAWS忽略删除更新?

回答

2

我在IE中成功击败这个bug的唯一方法是隐藏被删除的元素,添加新元素,然后删除隐藏的元素。

+0

谢谢!这很有帮助。我看到只隐藏以前的跨度就足够了。我不需要删除它,因为我用我的新内容替换了整个innerHTML(完成) – KannarKK

+0

您提供的两个文件都不使用此技术。第一个不隐藏任何东西。第二个使用不同的区域来处理源代码中提到的另一个问题:*“这是为了规避浏览器中的错误,如果这些错误太重复,将会停止宣告对同一个div的更新。”* – Adam

+1

您是正确的,示例不会实施这种技术,但正如@KannarKK所证实的那样,该技术确实解决了问题 – unobf

-1

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

请参阅Microsoft文档中的以下页面:aria-relevant attribute

在你的情况下,IE认为(错误地),你正在做一个文本更新(因为使用的innerHTML这被认为是一个字符串),所以它会通知删除和添加:

更新公布仅作为添加节点,或文本添加或删除

该解决方案应该添加或删除使用addChild()removeChild()功能。

+1

aria-relevant默认设置为添加。这是IE – unobf

+1

中的一个错误下面是指定默认值(添加文本)的地方http://www.w3.org/TR/wai-aria/states_and_properties#aria-relevant – unobf

+0

我没有看到这一点。如果'咏叹调相关'被默认设置为'添加',那么显然删除将不会被公布。指向MSDN文档已经指定的“附加文本”的文档不会给出任何额外的信息。这里的错误是Internet Explorer将对innerHTML的调用视为文本修改。在jQuery中使用addChild()和removeChild()或append()会给你预期的结果。 – Adam