aria-labelledby ссылается на идентификатор, которого нет в DOM (пока)

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

Когда я запускаю аудит своей разметки с помощью https://github.com/GoogleChrome/accessibility-developer-tools он сообщает мне, что «значения состояния и свойств ARIA должны быть действительными». Если я повторно запустил аудит после добавления элемента с идентификатором, который ни на что не ссылался, тест пройдет успешно.

Мой вопрос: будут ли программы чтения с экрана отключаться, если они натолкнутся на идентификатор, который не указывает ни на один элемент в настоящее время в DOM? Меня не слишком заботят результаты аудита напрямую (они там, чтобы помочь мне , но не мой клиент в конце концов).

* В основном я хочу знать, могу ли я поместить туда идентификаторы, которые, как я знаю, могут появиться позже, или мне следует обновить значение свойства , когда я добавляю и удаляю элементы, на которые я хочу ссылаться.


person jinglesthula    schedule 18.11.2013    source источник
comment
в сторону, я надеюсь, что можно заранее их туда положить. Библиотека, которую я использую, которая добавляет и удаляет элементы, о которых идет речь, не поддерживает обратные вызовы, когда это происходит, поэтому это будет боль :(   -  person jinglesthula    schedule 19.11.2013
comment
Прошло некоторое время с тех пор, как я работал над этим фрагментом кода, но IIRC я ​​нашел, как подключить добавление / удаление элемента, поэтому я думаю, что пошел по этому пути и в конечном итоге обновил список идентификаторов, когда элементы были добавлены / удаленный.   -  person jinglesthula    schedule 19.04.2014


Ответы (2)


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

Это также формально неверно, потому что атрибут был объявлен как содержащий значения атрибутов id, и строка не может быть таким значением, если атрибут id не существует.

Таким образом, вы должны просто заставить ваш скрипт изменить значение атрибута, чтобы оно содержало значение атрибута id, как только вы добавите это значение, но не раньше.

person Jukka K. Korpela    schedule 18.11.2013

Программы чтения с экрана не будут "отключаться", но это может быть странно для пользователя. Это важный вопрос, правда? Вы можете убедиться в этом сами, используя VoiceOver (входит в состав MacOS) или NVDA (бесплатно для Windows).

person isherwood    schedule 18.11.2013
comment
вы знаете какую-то странность? Если я укажу idA idB, а idB не существует, он прочитает idA, а затем скажет что-нибудь, указывающее на то, что не может найти idB, или просто приостановится на некоторое время? Полагаю, мне нужно укусить пулю и научиться использовать NVDA :) Спасибо, что указали мне на это. хорошо знать, что доступна бесплатная программа для чтения. - person jinglesthula; 19.11.2013
comment
Прошло несколько месяцев с тех пор, как я тестировал программу чтения с экрана, поэтому на данный момент у меня нет ответа. - person isherwood; 19.11.2013