屏幕阅读器如何处理在aria-live
和aria-atomic
的另一个元素中包含aria-live
和aria-atomic
的元素以及嵌套元素内的内容更改的情况?
它会读两个部分,两次读取嵌套部分吗?
HTML:
<div aria-live="polite" aria-atomic="true">
Here is some text, <span>this itself may change</span>. It is a large section of the page
<div aria-live="polite" aria-atomic="true">
This is another part of the page that may change, it is also large. <span>This part may change too</span>
</div>
</div>
我问的原因是因为我使用AngularJS制作需要符合ADA标准的SPA。该站点具有嵌套布局方案,其中页面的内部部分将在不更改外部部分的情况下进行更改,但外部部分可能会更改一个点。理想情况下,我希望只有内部部分在更改时才能读取。当外部部分改变时,它会读取所有部分,一次。
答案 0 :(得分:1)
抱歉,这是特定于API的:
Table of document change scenarios and events to be fired in each API Scenario MSAA + UIA Express event MSAA + IAccessible2 event ATK/AT-SPI event Mac OS X Notification When text is removed EVENT_OBJECT_LIVEREGIONCHANGED IAccessible2: IA2_EVENT_TEXT_REMOVED text_changed::delete If in a live region, AXLiveRegionChanged When text is inserted EVENT_OBJECT_LIVEREGIONCHANGED IAccessible2: IA2_EVENT_TEXT_INSERTED text_changed::insert If in a live region, AXLiveRegionChanged When text is changed EVENT_OBJECT_LIVEREGIONCHANGED IAccessible2: IA2_EVENT_TEXT_REMOVE text_changed::delete If in a live region, AXLiveRegionChanged and IA2_EVENT_TEXT_INSERTED and text_changed::insert建议
aria-atomic
行为:
用户代理应该检查aria-atomic =“true”的祖先元素链。如果找到,用户代理应该将RELATION_MEMBER_OF关系设置为指向设置aria-atomic =“true”的祖先。
aria-live
行为也是如此:
用户代理应该确保正在运行的辅助技术可以在删除之前接收正在删除的节点的通知。这允许辅助技术(例如屏幕阅读器)返回到被删除的相应DOM节点。这对于移除很重要的实时区域非常重要。例如,屏幕阅读器希望通知用户另一个用户已离开聊天室。 MSAA中的事件将是EVENT_OBJECT_HIDE。对于ATK / AT-SPI,这将是children_changed :: remove。在Mac OS X中,事件是AXLiveRegionChanged。这还要求用户代理在可访问性API通知中提供唯一ID,以标识要删除的唯一节点。
<强>参考强>