Роль предупреждения ARIA для сообщений об ошибках

Возможно, связано: Предупреждение WAI ARIA при отправке формы (с перезагрузкой страницы)

В простой HTML-форме, которая отправляется на сервер (без JavaScript) ... если есть одна или несколько ошибок, и страница повторно отображается с той же формой и <ul> сообщений об ошибках, если этот список будет размечен в качестве:

<form ...>
    <ul role="alert">
        <li>Error 1</li>
        <li>Error 2</li>
    </ul>
    <!-- Fields -->
</form>

Причина, по которой я спрашиваю, заключается в том, что «элементы с предупреждением о роли имеют неявное значение aria-live assertive» ... что заставляет меня думать, что, возможно, это больше для JavaScript, вставляющего ошибки в DOM.

https://www.w3.org/TR/wai-aria/roles#alert

Таким образом, это может быть бесполезно для вспомогательных устройств (поскольку оно находится на странице для начала) ... и, возможно, может быть вредным, поскольку оно не "живое".

https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_alert_role


person Craig Francis    schedule 29.01.2014    source источник


Ответы (2)


Я бы сказал, что вы правы. Живые регионы должны отображать изменяющуюся информацию на экране, следовательно, «живые». Если бы был AJAX, было бы неплохо, если бы предупреждение сообщило, что пошло не так. Тем не менее, с полным сообщением на сервер, я бы сказал, что здесь это не будет эффективно.

Я только что попробовал это с помощью NVDA в Firefox, он (что удивительно) читает предупреждение, как только страница открывается. Однако вам нужно решить, нужна ли вам эта функция.

Надеюсь это поможет.

person Craig Brett    schedule 30.01.2014
comment
Спасибо @ craig-brett, это очень полезно и хороший вопрос ... может ли кто-нибудь, использующий пользовательский агент, обнаруживший role=alert, сделать это первым, что читается на странице? ... Я знаю много лун назад основной проблемой для программ чтения с экрана была отправка формы без знания того, была ли она успешной (поэтому я изменил страницу <title> на Произошла ошибка). - person Craig Francis; 31.01.2014
comment
@ Крейг-Фрэнсис, если вы имеете в виду, должны ли пользовательские агенты читать вещи с помощью role = alert в первую очередь даже при полном обновлении страницы, да, я бы так сказал. Или, если вы имели в виду, может, пользователь предпочел бы предупреждение, а не текст на экране. Я думаю, что это будет варьироваться от пользователя к пользователю. Лично я не возражаю, но это вполне может быть незаконное присвоение живых регионов, и ощущается немного по-другому. Думаю, я заметил, что Linkedin использует подобную тактику, когда вы отправляете сообщение, если это добавляет легитимности. - person Craig Brett; 19.02.2014
comment
Приятно знать, спасибо @ craig-brett ... Думаю, я сейчас вставлю его и посмотрю, получу ли я какие-нибудь жалобы или комментарии о том, насколько это полезно. Хотя я все еще нахожу, что люди, которые полагаются на программы чтения с экрана (или другие системы), либо не используют мои веб-сайты, либо не комментируют обнаруженные ими проблемы. - person Craig Francis; 19.02.2014

В соответствии с последним запросом, который я получил из отчета SSB Bart, они просят нас добавлять role = "alert" к каждому сообщению об ошибке.

person isaac weathers    schedule 11.02.2015
comment
Это отчет специально для вашего веб-сайта или общий, доступный (и на который можно ссылаться) для чтения? Просто пытаюсь найти как можно больше ссылок :-) - person Craig Francis; 11.02.2015
comment
Не является общедоступным, но я могу сказать вам, что у нас должны быть те же требования ADA, что и на большинстве государственных сайтов. На самом деле мне пришлось добавить дополнительное объявление attr в последний главный файл jQuery.Validate, чтобы он генерировал сообщение role = alert для каждого диапазона ошибок. - person isaac weathers; 14.02.2015
comment
Интересно ... Значит, на странице потенциально было много диапазонов предупреждений? Интересно, если бы, поскольку я показываю один список ошибок вверху страницы, он будет по-другому (лично мне нравится иметь один список, чтобы все ошибки были в одном месте, и поскольку они находятся в ‹ul ›, Количество ошибок может считываться некоторыми пользовательскими агентами, например программами чтения с экрана). - person Craig Francis; 14.02.2015
comment
Да, кажется немного странным размещать так много ролей = предупреждений на одной странице, потому что они потенциально могут появиться все одновременно. Размещение их всех в одном списке или под / над каждым полем - вопрос дизайнерских предпочтений. В вашем случае я бы подумал, что role = alert можно просто применить к основному UL для ошибок. Что касается меня, я предпочитаю, чтобы они были встроены во входные данные, чтобы было явное изменение ошибок ответа сервера. Это упрощает управление возвратом фокуса после прохождения проверки пользовательского интерфейса и просто фокусируется на новом div с ошибкой для любых сбоев бэкэнда. - person isaac weathers; 15.02.2015