

























Today Temani Afif asked a question:
Are the below codes equivalent if we consider all the aspects? (a11y, semantic, something else maybe?)
If not, what is missing (or should be changed) in the second code
![]()
I have my canned response that aria-label auto-translation is inconsistent.
But the something else maybe
question is what reminded me that this construct has caused issues outside of WCAG concerns. In particular, the only assistive technologies (AT) that consume ARIA are screen readers and, to a far lesser extent, voice control. That latter part only because browsers assemble the accessible names, not AT. There’s plenty more AT that never touches ARIA.
I knew there were issues, but couldn’t rattle them off from the top of my head. So I built some examples and poked them with other accessibility features of browsers.
I am not testing screen readers nor voice control.
aria-label value of any link.aria-hidden, regardless of other attributes.aria-label value of any link.aria-hidden, regardless of other attributes.aria-hidden.
aria-hidden.
aria-label value of any link.aria-hidden links, though that changed when I got more content on the page.
As Amelia Bellamy-Royds points out, the text-to-speech features seem to respect the aria-hidden but ignore the aria-label — and by extension the accessible name the browser provides in the accessibility tree.
Three key takeaways here (yes, I know your use case is special):
aria-label on links;aria-hidden within links;I look forward to you, dear reader, trying other approaches and letting me know where these fall down (or what I got wrong). I don’t need to know where they are supported. Just the gaps.
These are the tests I used to generate the results you just read (originally as a Codepen). You can ignore this part unless you want to run your own tests. If you want to find other ways these approaches might break for users, then please do so.
I used the Korean words 샌드위치 for “sandwich” and 망치 for “hammer” (the values of aria-label).
The links with aria-label all fail WCAG SC 2.5.3 Label in Name, but it’s intentional so I can quickly tell if the aria-label is exposed. Similarly, the links with aria-hidden and no aria-label fail 4.1.2 Name, Role, Value, but again I wanted to see how they performed.
<a href="https://en.wikipedia.org/wiki/Sandwich">
Sandwich
</a><a href="https://ko.wikipedia.org/wiki/%EC%83%8C%EB%93%9C%EC%9C%84%EC%B9%98" hreflang="ko" lang="ko">
샌드위치
</a>aria-label: Sandwich
<a href="https://en.wikipedia.org/wiki/Sandwich" aria-label="hammer">
Sandwich
</a>aria-label: 샌드위치
<a href="https://ko.wikipedia.org/wiki/%EC%83%8C%EB%93%9C%EC%9C%84%EC%B9%98" hreflang="ko" lang="ko" aria-label="망치">
샌드위치
</a><span>:
Sandwich
<a href="https://en.wikipedia.org/wiki/Sandwich">
<span>
<span>S</span><span>a</span><span>n</span><span>d</span><span>w</span><span>i</span><span>c</span><span>h</span>
</span>
</a><span>:
샌드위치
<a href="https://ko.wikipedia.org/wiki/%EC%83%8C%EB%93%9C%EC%9C%84%EC%B9%98" hreflang="ko" lang="ko">
<span>
<span>샌</span><span>드</span><span>위</span><span>치</span>
</span>
</a>aria-label and each letter of visible text in its own <span>:
Sandwich
<a href="https://en.wikipedia.org/wiki/Sandwich" aria-label="hammer">
<span>
<span>S</span><span>a</span><span>n</span><span>d</span><span>w</span><span>i</span><span>c</span><span>h</span>
</span>
</a>aria-label and each letter of visible text in its own <span>:
샌드위치
<a href="https://ko.wikipedia.org/wiki/%EC%83%8C%EB%93%9C%EC%9C%84%EC%B9%98" hreflang="ko" lang="ko" aria-label="망치">
<span>
<span>샌</span><span>드</span><span>위</span><span>치</span>
</span>
</a>aria-hidden on visible text with each letter of visible text in its own <span>:
<a href="https://en.wikipedia.org/wiki/Sandwich">
<span aria-hidden="true">
<span>S</span><span>a</span><span>n</span><span>d</span><span>w</span><span>i</span><span>c</span><span>h</span>
</span>
</a>aria-hidden on visible text with each letter of visible text in its own <span>:
<a href="https://ko.wikipedia.org/wiki/%EC%83%8C%EB%93%9C%EC%9C%84%EC%B9%98" hreflang="ko" lang="ko">
<span aria-hidden="true">
<span>샌</span><span>드</span><span>위</span><span>치</span>
</span>
</a>aria-label and aria-hidden on visible text with each letter of visible text in its own <span>:
<a href="https://en.wikipedia.org/wiki/Sandwich" aria-label="hammer">
<span aria-hidden="true">
<span>S</span><span>a</span><span>n</span><span>d</span><span>w</span><span>i</span><span>c</span><span>h</span>
</span>
</a>aria-label and aria-hidden on visible text with each letter of visible text in its own <span>:
<a href="https://ko.wikipedia.org/wiki/%EC%83%8C%EB%93%9C%EC%9C%84%EC%B9%98" hreflang="ko" lang="ko" aria-label="망치">
<span aria-hidden="true">
<span>샌</span><span>드</span><span>위</span><span>치</span>
</span>
</a>Don’t be shy about making your own variations and leaving your results in the comments.
You know what? Just don’t split words into letters. It’s not just a problem with links, even if it’s more excitingly wrong with links.
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。