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

1 ответ

Решение

Извините, это зависит от API:

Таблица сценариев изменения документа и событий, которые должны запускаться в каждом сценарии API. Событие MSAA + UIA Express. Событие MSAA + IAccessible2. Событие ATK/AT-SPI. Mac OS X Уведомление об удалении текста., AXLiveRegionChanged Когда текст вставляется EVENT_OBJECT_LIVEREGIONCHANGED  IAccessible2: IA2_EVENT_TEXT_INSERTED    text_changed:: вставки Если в живом регионе, AXLiveRegionChanged Когда текст изменен EVENT_OBJECT_LIVEREGIONCHANGED  IAccessible2: IA2_EVENT_TEXT_REMOVE     text_changed:: удалить Если в живом регионе, AXLiveRegionChanged и IA2_EVENT_TEXT_INSERTED и text_changed:: вставка

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

Рекомендации

Другие вопросы по тегам