【问题标题】:Can you force a screen reader to read numbers as individual digits?您可以强制屏幕阅读器将数字读取为单个数字吗?
【发布时间】:2016-03-09 11:59:45
【问题描述】:

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

当屏幕阅读器遇到数字输入字段时,它会将值作为整数读取。例如,如果我有三个用于美国电话号码的输入字段,第一个是区号(3 位),然后是交换机(3 位),然后是线路(4 位),如果字段有 123、456 , 7890(分别),我们通常说这个数字的方式是“一二三”、“四五六”、“七、八、九、零”。

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

我认为屏幕阅读器用户习惯于将电话号码听成大数字(至少我谈过的人是这样期望的),但这并不意味着我们不能让它变得更好。如果我向其中一个人询问他们的电话号码,他们不会使用大数字,而是使用单个数字。

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

我能想到的就是围绕它进行编码,方法是使用一个视觉隐藏的 ,其中包含作为单独数字的数字 1 2 3,然后使用

有没有更好的办法?

【问题讨论】:

标签: accessibility voiceover screen-readers jaws-screen-reader nvda


【解决方案1】:

浏览器支持有限,可以试试 CSS3 属性:

speak:spell-out;

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

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

您也可以使用hCard microformat,它可以被某些技术解释,并使用国际格式的电话号码(其他人可以使用)结合以前的方法

<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 属性

【讨论】:

【解决方案2】:

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

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

您不想妨碍复制粘贴或其他基本操作,但作为增强功能,您可以使用 aria-label ,如以下答案:ARIA attributes for reading alternative text (e.g. Roman Numerals) in HTML

例如 &lt;span aria-label="One, Two, Three"&gt;&lt;span aria-hidden="true"&gt;123&lt;/span&gt;&lt;/span&gt;

但是,这很麻烦而且很烦人,我认为屏幕阅读器应该做得更好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-02
    • 1970-01-01
    相关资源
    最近更新 更多