4

Я просто заметил, что, хотя атрибуты aria-label, aria-labelledby и aria-describedby говорят работать на каждом элементе (см http://www.w3.org/TR/wai-aria/states_and_properties#aria-describedby), они, кажется, только для работы несколько элементов, таких как a, а не для, например, div или p в NVDA и JAWS.ария этикетки, ария-labelledby и ария-describedby: очень непредсказуемое поведение в экранном

Я создал небольшую codepen продемонстрировать вопрос (просмотреть его с помощью просматривания и режима фокусировки):

http://codepen.io/jmuheim/pen/avWbPe

К примеру, в NVDA, на a элементе, то aria-label и aria-labelledby, кажется, работают как в режиме просмотра, так и в режиме фокусировки. Но aria-describedby объявляется только в режиме фокуса, а не в режиме просмотра.

Для элемента input ни один из атрибутов не работает в режиме просмотра, но все работают в режиме фокусировки.

Для «голых» текстовых элементов, таких как p или div, ни один из атрибутов не работает.

В JAWS это очень похожее поведение, но, по крайней мере, для элемента p, когда есть aria-describedby, он сообщает, что описание можно прочитать, нажав «JAWS + alt + r».

Я действительно не вижу ясного шаблона для этого, поэтому я задаюсь вопросом, каковы общие правила в прошивках о том, как использовать эти атрибуты? Или лучше: почему они не просто работают для каждого элемента, как предлагает спецификация?

ответ

6

ARIA не определяет, как вспомогательные технологии должны выставлять интерфейс. Он определяет, как browsers are required раскрывать роли, состояния и свойства через API-интерфейсы доступности. То же самое и с HTML в целом, спецификация HTML не определяет/требует пользовательский интерфейс, который остается решать в браузерах. В случае арии-метки (например) в ARIA требуется, чтобы ария-метка была сопоставлена ​​с доступным свойством имени в accessibility APIs, это не требование, которое читатели экрана сообщают об этом или нет в любом элементе (т.е. выставлять как часть пользовательского интерфейса). Общее правило наблюдения заключается в том, что считыватели экрана объявят accessible names and accessible descriptions по адресу interactive elements. Они объявят доступные имена на большинстве grouping elements и sectioning elements. Они объявят ни на большинстве text level elements.

Примечание: выше также применимо к любому элементу, у которого есть семантика по умолчанию, переопределенная рольми ARIA. Например, ARIA widget roles будет объявлено как имя, так и описание, как встроенные HTML-интерактивные элементы.

+1

Спасибо за объяснение и предоставление источников. Я задал [тот же вопрос по трекеру NVDA] (http://community.nvda-project.org/ticket/5398), есть некоторая информация, характерная для NVDA. –