【问题标题】:aria-label attribute not being read when navigating using keyboard使用键盘导航时未读取 aria-label 属性
【发布时间】:2018-09-11 17:04:03
【问题描述】:
<span class="phone" aria-label="phone number 9 4 9 . 5 5 5 . 1 2 3 4">949.555.1234</span>

这会在页面上打印出电话号码。单击电话号码将按预期读取 aria-label,但是,如果我使用键盘箭头导航到电话号码,它会读取页面上输出的任何文本(“949 周期 500”... ) 在这种情况下,不尊重 aria-label。

使用 ChromeVox

另外值得一提的是,span 标签在使用箭头键时不会获得焦点。即$("span").focus(function(){ // never gets here })

【问题讨论】:

  • 这似乎不是一个问题。如果您想向 ChromeVox 的开发人员报告错误,请参阅chromevox.com/feedback.html
  • 啊,没有意识到这可能是 chromeVox 的问题,以为可能是一般问题。只是用了一个不同的,我没有看到这个问题。谢谢!
  • &lt;a href="tel:9495551234" aria-label="949. 5 5 5. 1 2 3 4."&gt;(949) 555-1234&lt;/a&gt; 试试这个方法。注意标签中的空格和句点。标签中的空格告诉屏幕阅读器单独阅读每个数字。区号和交换后的句点告诉屏幕阅读器暂停

标签: javascript html accessibility wai-aria


【解决方案1】:

您能否阐明“使用键盘导航”的含义?

您是否使用 TAB 获取电话号码,然后屏幕阅读器无法读取您的 aria-label? (你的&lt;span&gt; 上没有tabindex="0",所以我猜你没有使用 TAB 键。)

或者您是否使用屏幕阅读器键在键盘上导航,例如遍历 DOM 的向上/向下键(或者更准确地说,遍历类似于 DOM 的可访问性树)。

如果是后者,那么如果该元素没有role,许多浏览器将不会在可访问性树中显示该元素的aria-label&lt;span&gt; 元素没有任何语义含义,因此您还必须添加 role 属性。这是否是正确的行为是值得商榷的,因为aria-label spec 并没有明确说明还必须指定角色。

有一些关于如何支持 aria-labelARIA guidelines 解释了(某种程度上)为什么 aria-label 可能会在 &lt;span&gt; 上被忽略。

因此,如果您真的想读取aria-label,您必须决定赋予&lt;span&gt; 什么样的角色。仅凭您的小sn-p代码很难分辨,但电话号码是否也是其他信息的一部分,例如姓名和地址?如果是这样,其他信息(姓名、地址等)是否显示在列表或表格中,还是只是纯文本?

不过,附带说明一下,当您指定 aria-label 以强制屏幕阅读器以某种方式阅读文本时,通常建议这样做。对于屏幕阅读器用户来说,将电话号码读作实数而不是单个数字当然不是理想的选择,但他们已经习惯了,如果愿意,他们可以一次导航一个数字。在某个时候,当屏幕阅读器更广泛地支持autocomplete 属性时,希望这个问题能够得到解决。同时,当您为屏幕阅读器强制输入文本时,可能会对盲文用户产生不利影响。在您的手机示例中,作为盲文用户,我的盲文设备将显示“九空格四空格九空格点空格五空格五空格五空格[等]”。对于我必须清除的空格字符,有很多盲文字符。

【讨论】:

  • 我之前把这个加入了书签,打算自己回答,但你的已经涵盖了。 Short note on aria-label, aria-labelledby, and aria-describedby也有很好的总结。
  • 是的,我喜欢 Léonie 的博客。她在无障碍社区中备受尊敬。在这种情况下,她的博客只是前面提到的“ARIA 指南”链接的摘要。指南一开始就很短(只有 10 个要点),而 Léonie 则提出了 4 个要点。
猜你喜欢
  • 2017-07-29
  • 1970-01-01
  • 1970-01-01
  • 2014-05-13
  • 2015-12-29
  • 2023-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多