屏幕阅读器如何使用aria-atomic处理嵌套的aria-live

时间:2014-03-04 18:18:40

标签: screen-readers wai-aria textreader disability

屏幕阅读器如何处理在aria-livearia-atomic的另一个元素中包含aria-livearia-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。该站点具有嵌套布局方案,其中页面的内部部分将在不更改外部部分的情况下进行更改,但外部部分可能会更改一个点。理想情况下,我希望只有内部部分在更改时才能读取。当外部部分改变时,它会读取所有部分,一次。

1 个答案:

答案 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,以标识要删除的唯一节点。

<强>参考