Как программы чтения с экрана обрабатывают вложенную aria-live с помощью aria-atomic

Как программа чтения с экрана справится с ситуацией, когда у вас есть элемент с 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 для создания SPA, который должен быть совместим с ADA. Сайт имеет схему вложенного макета, при которой внутренние разделы страницы могут быть изменены без изменения внешних разделов, но внешние разделы могут изменить одну точку. В идеале я бы хотел, чтобы при изменении читалась только внутренняя часть. Когда внешний раздел изменится, он прочитает все один раз.


person TheSharpieOne    schedule 04.03.2014    source источник
comment
Разве способ обработки не будет зависеть от конкретного используемого средства чтения с экрана?   -  person RacerNerd    schedule 04.03.2014
comment
Я надеялся, что будет какой-то стандарт или кто-то сможет заметить, что делают в этом случае разные популярные книги.   -  person TheSharpieOne    schedule 04.03.2014


Ответы (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 специальных возможностей, идентифицирующий удаляемый уникальный узел.

Ссылки

person Paul Sweatte    schedule 24.04.2014