ARIA Properties, DOM и постепенная деградация - PullRequest
1 голос
/ 01 августа 2011

Должны ли свойства ARIA существовать в реальном HTML? Или они могут быть добавлены через Javascript во время выполнения?

Рассмотрим следующий сценарий ...

<button id="submit" type="submit">Submit</button>
<div id="validation-message"></div>

Если в браузере пользователя нет Javascript, мы показываем его проверку на новой странице (обработанной и созданной сервером). Если в браузере пользователя есть Javascript, мы добавляем приведенный выше HTML-код следующим образом, а затем динамически показываем проверку в DIV.

$('#submit').attr({'aria-haspopup':true, 'aria-owns':'validation-message'});
$('validation-message').attr({'role':'alert', 'aria-live':'assertive'});

Полагаю, еще один вопрос: повредит ли что-нибудь, когда эти свойства ARIA находятся непосредственно в источнике HTML? Если Javascript нет, ARIA вообще что-нибудь сделает?

Ответы [ 2 ]

4 голосов
/ 01 августа 2011

Роли ARIA Landmark можно размещать непосредственно в разметке, они могут быть полезны, даже если JavaScript отключен. Если функциональность, которую описывают атрибуты ARIA, доступна только при включенном JavaScript, я бы сказал, что можно добавить эти атрибуты с JavaScript.

0 голосов
/ 28 мая 2013

Документ W3C (рабочий проект) Использование WAI-ARIA в HTML рекомендует в пункте Добавить ARIA inline или с помощью скрипта? , чтобы атрибуты ARIA были добавлены с помощью сценариев, а не написаны в разметке HTML. Тем не менее, добавляется, что атрибут может быть записан в разметке, если он «не использует сценарии для обеспечения поведения взаимодействия» или «содержимое и взаимодействие поддерживаются только в контексте просмотра с поддержкой сценариев».

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...