#html #accessibility #screen-readers #wai-aria
#HTML #Специальные возможности #программы чтения с экрана #вай-ария
Вопрос:
У меня есть некоторый контент на странице, который представляет математические формулы. Этот контент находится внутри <span>
, но внутри него есть пользовательский контент, смешанный с текстом. У меня есть текстовое описание математического контента, которое я мог бы поместить в aria-label
атрибут в <span>
, но программы чтения с экрана, похоже, игнорируют атрибуты aria для элементов, не относящихся к форме.
Есть ли способ заставить программы чтения с экрана использовать альтернативное описание для содержимого внутри <span>
или <div>
?
Мой html выглядит так
<span aria-label='[TEXT DESCRIPTION]'>
<svg>[SOME SVG CONTENT]</svg>
<span>[SOME TEXT CONTENT]</span>
</span>
Комментарии:
1. Имеет ли значение добавление атрибута title к тегу SVG?
Ответ №1:
Ваш код
<span aria-label='[TEXT DESCRIPTION]'>
<svg>[SOME SVG CONTENT]</svg>
<span>[SOME TEXT CONTENT]</span>
</span>
выглядит немного странно для меня. Первое, что я бы сделал, это изменил внешний диапазон на <div>
. Возможно, вам потребуется добавить к нему что-то вроде tabindex="-1"
. Более универсальным подходом к дизайну было бы иметь [ТЕКСТОВОЕ ОПИСАНИЕ] в виде обычного текста до / после [НЕКОТОРОГО ТЕКСТОВОГО СОДЕРЖИМОГО], идея в том, что если человеку с нарушениями зрения нужна дополнительная помощь, то другие люди также могут.
Другой вариант может быть таким
<div>
<svg aria-describedby="mathOne">.....</svg>
<span id="mathOne" class="offScreen">{Description}</span>
<span>Content</span>
</div>
Из комментариев:
визуально svg и текстовое содержимое могут быть наложены друг на друга или расположены абсолютно так, чтобы это имело смысл с точки зрения математической формулы. Подумайте о символе sqrt, который растет вместе с радикалом и радиусом.
Я не хочу этого делать. Контент <span>
должен улучшать вещи. Давайте представим, что я отображаю квадратичную формулу, код будет выглядеть так
<div>
<svg aria-describedby="mathOne">{Generated Formula}</svg>
<span id="mathOne" class="offScreen">negative B plus or minus the
square root of the radical B squared - 4 a c end radical all over 2 a.</span>
<span>In basic algebra, the quadratic formula is the solution of
the quadratic equation.</span>
</div>
Примечание: я не занимался математикой и нарушениями зрения в течение 5 лет, поэтому может быть лучший способ записать формулу, но вы поняли идею.
Комментарии:
1. Этот подход не будет работать точно, потому что визуально svg и текстовое содержимое могут быть наложены или расположены абсолютно так, что это имеет смысл с точки зрения математической формулы. Подумайте о символе sqrt, который растет вместе с радикалом и радиусом. Я не могу описать отдельные части отдельно, мне нужно описание для целого.
2. Я добавил пример
3. Вероятно, лучший ответ, чем мой… Программы чтения с экрана читают элементы svg как графику повсеместно? Если это так, то это дает эффект, к которому я стремился, но лучше.
4.Я знаю, что в этой области было проделано немало работы. Это один из тех, за которыми я не слежу активно в основном из-за личного интереса. Ничего не приходит сразу на ум относительно отображения текста в
<svg>
, но обычно, если вспомогательные технологии знают, как взаимодействовать с ARIA, они должны просто объявлятьmathone
<span>
и игнорировать<svg>
. OP, вероятно, мог бы подключитьсяrole="presentation"
к<svg>
, если они хотят убедиться, что<svg>
не был затронут. Конечно, в этом есть свои плюсы и минусы
Ответ №2:
Вы могли бы попробовать установить атрибут роли на что-то вроде img и установить aria-label, вот так.
<span role="img" aria-label="This will appear like an image. Nothing will be read from inside, but you can set your own description">
<span>here is some non-screen-readerable stuff</span>
</span>
Это то, что вы ищете?
p.s. нечитаемый с экрана может быть или не быть правильным использованием английского языка. Но я думаю, что это иллюстрирует суть.
Надеюсь, это поможет!
Комментарии:
1. К сожалению, это не работает. Программа чтения с экрана по-прежнему не читает текст. Фактически, теперь он полностью игнорирует элемент.
2. Я попробовал это, установив роль в текстовое поле, и это работает. Я не уверен, какие побочные эффекты это может иметь, но это может быть шагом в правильном направлении.
3. Я бы посоветовал не использовать текстовое поле, так как это было бы действительно запутанным. с какой конфигурацией браузера / программы чтения с экрана вы пробовали img? Он работает с FF и NVDA, но я не пробовал все браузеры со всеми программами чтения с экрана.