你能强迫屏幕阅读器把数字读成单个数字吗



电话号码通常都是数字,忽略括号、短划线、加号等,因此电话号码的输入字段通常是数字。

当屏幕阅读器遇到数字输入字段时,它会将该值读取为整数。例如,如果我为一个美国电话号码输入了三个字段,第一个是区号(3位),然后是交换机(3位数),最后是线路(4位数),如果字段分别为1234567890,我们通常说这个数字是"一二三"、"四五六"、"七、八、九、零"。

但当屏幕阅读器遇到这些字段时,它会说"一百二十三"、"四百五十六"、"七千八百九十"。

我认为屏幕阅读器用户习惯于把电话号码当作大数字来听(至少我采访过的人都这么认为),但这并不意味着我们不能让它变得更好。如果我问其中一个人他们的电话号码,他们不会用大号码,而是用个位数。

我尝试了各种<input>类型,并查看了所有角色、状态和属性,但没有看到任何可以强制读取数字的内置内容。

我所能想到的就是通过在视觉上隐藏<span>包含作为单独数字的数字,<span id='o'>1 2 3<span>,则具有<输入唱段labeledby='o'>。

有更好的方法吗?

在有限的浏览器支持下,您可以尝试CSS3属性:

speak:spell-out;

最好的方法是使用aria-label提供一种方便的、有足够停顿的阅读格式:

<span aria-label="1 2 3. 4 5 6. 7 8 9 0">123 456 7890</span>

您还可以使用hCard微格式,该格式可以由某些技术解释,并使用国际格式的电话号码(其他人可以使用)与以前的方法相结合

<p class="h-card">
  <span class="p-tel" aria-label="1 2 3. 4 5 6. 7 8 9 0">+123 456 7890</span>
</p>

TL;DR:使用国际格式、aria-label、hCard微格式和speak:spell-out CSS属性

我认为您的基本职责是以您所在地区的正常方式显示电话号码(即显示美国电话号码与显示英国电话号码不同)

与其他网站的做法保持一致(即使是次优)将为屏幕阅读器用户带来最少的工作量。这有点像那些自动将您添加到下一个字段的输入。好主意,但人们已经习惯了次优方法,所以无论如何都要按tab键。

你不想妨碍复制粘贴或其他基本的东西,但作为一种增强,你可以使用aria标签,如下所示:aria属性用于读取HTML 中的替代文本(例如罗马数字)

例如。<span aria-label="One, Two, Three"><span aria-hidden="true">123</span></span>

然而,这说起来很烦人,我认为屏幕阅读器应该做得更好。

相关内容

  • 没有找到相关文章

最新更新