-Элемент: Ария-метки или атрибут title

в то время как рекомендуется использовать на <abbr /> элемент, это не влияет на считыватели экрана (по крайней мере, не на chromevox).

<abbr title="as soon as possible">ASAP</abbr>

вещь, которая работает, конечно aria-label Эл.г:

<abbr aria-label="as soon as possible">ASAP</abbr>

поэтому, чтобы быть семантически совместимым с corrent и Screen reader, мне нужно отметить оба:

<abbr aria-label="as soon as possible" title="as soon as possible">ASAP</abbr>

что кажется немного Хак. почему chromevox просто не читает название атрибут вместо этого?

2 ответов


короче говоря: несмотря на одну из рекомендаций WCAG,abbr не является идеальным решением, чтобы объяснить значение аббревиатуры для всех,aria-label следует использовать, когда вы хотите объявить произношение аббревиатуры.

считыватели экрана не должны читать title атрибут, поскольку он не предназначен для замены aria-label. См. также W3 предупреждающий: http://www.w3.org/TR/html/dom.html#attr-title

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

я никогда не поощряем использование abbr тег по двум причинам:

  • это не фокусируемый элемент так что вы не можете перемещаться по нему с помощью клавиатуры, чтобы увидеть смысл аббревиатуры. Если вы намерены предоставить произносимую альтернативу, то aria-label - это наверняка то, что вам нужно.

например, когда аббревиатура является частью языка, вам нужно объяснить это, но вы можете дать альтернативу речи:

Director: <span aria-label="Mister">Mr</span> Smith

  • слепые люди понимают аббревиатуры как и большинство из нас,

например, следующее предложение-это то, что слепые люди могут прекрасно понять:

Джон Смит из НАТО был арестован ФБР.

и следующий гораздо менее понятен

Джон Смит из Североатлантического договора Организация была арестована Федеральным бюро расследований.

As abbr используется для аббревиатур и сокращений вы должны использовать свойство CSS speak:spell-out чтобы объявить, что элемент должен быть прописан. Вы можете использовать abbr тег семантически указывает, что это аббревиатура или аббревиатура, но это не повлияет на глобальную доступность.


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

плохой пример, когда аббревиатура не помогает читабельности:

<abbr title="Doctor">Dr.</abbr> Smith is located on Lincoln <abbr title="Drive">Dr.</abbr>

хороший пример (простой лучше):

доктор Смит находится на Линкольн-драйв

WCAG продвигают многие другие методы, чем использование abbr tag:


мне жаль добавлять еще один совершенно другой ответ, но я думаю, что оба ответа не должны быть объединены:

поскольку ChromeVox является открытым исходным кодом, у меня есть второй и теперь технический ответ на ваш вопрос. http://src.chromium.org/svn/trunk/src/chrome/browser/resources/chromeos/chromevox/common/dom_util.js

для любого элемента (и нет исключений для аббревиатур) chromevox отступает к Если есть нет текстового содержимого в узле (node.textContent.length==0)

вот порядок приоритета, определенный в коде:

  • текстовое содержимое, если это текстовый узел.
  • Ария-labelledby
  • Ария-метка
  • клавишу " Alt " (для изображения)
  • заголовок (только если нет текстового содержимого)
  • ярлык (для элемента управления)
  • заполнитель (для элемента input)
  • рекурсивные вызовы дети!--22-->

теперь, это своего рода багги ситуация

  1. этот пример, на мой взгляд, правильно читает "Би-би-си":

<abbr title="British Broadcasting Corporation">BBC</abbr>

  1. это объявляет "британская радиовещательная корпорация": который является правильным резервным вариантом недопустимой разметки

<abbr title="British Broadcasting Corporation"></abbr>

  1. но это не прочитайте что-нибудь, потому что длина текста узла не равна null

<abbr title="British Broadcasting Corporation"> </abbr>

если мы за исключением последней ошибки, это не идеальная, но вполне последовательная реализация Текстовые Альтернативные Вычисления

  • [F. В противном случае, посмотрите в поддереве]
  • G. В противном случае, если текущий узел является текстовым узлом, верните его текстовое содержимое.
  • H. В Противном Случае, если текущий узел имеет атрибут tooltip, верните его значение.

обратите внимание, что согласно документу, упомянутому в одном комментарии выше, атрибут title, если он присутствует, теперь должен использоваться API доступности вместо текстового содержимого: (http://rawgit.com/w3c/aria/master/html-aam/html-aam.html#text-level-elements-not-listed-elsewhere) - ... Я не уверен, что это хорошо, как title атрибут был ранее и до сих пор определена как следующее на В3.

атрибут title представляет консультативную информацию для элемента, например, соответствующую подсказке