首页 > 解决方案 > 强制屏幕阅读器将数字读取为单个数字

问题描述

我正在使用画外音,并试图让它将数字读取为单个数字,例如,如果我输入了 2000,画外音将读出“两千”。我希望所需的行为读出“两个零零零”。

我当前的输入元素看起来像这样

<input class="some-class" id="some-id" name="some-name"
 type="text">

我尝试将 type 属性设置为type="number"type="tel"并添加一个等于 的 style 属性style="speak:spell-out",但它们都不起作用。

当我用空格分隔数字时,value="2 0 0 0"它可以工作,但当然,你不能指望用户这样做。

我知道可能有一种方法可以使用 javascript 来执行此操作,但由于业务需求,该解决方案不能在浏览器中包含 javascript。

有什么建议么?

标签: htmlaccessibilityscreen-readers

解决方案


您不应该尝试强制特定的发音或数字分组。如果分组具有特殊的重要性或意义,请添加空格。

采取基本原则,即屏幕阅读器对数字的阅读方式不应与呈现方式不同。如果必须以特定方式分隔数字,请添加空格、点、破折号或其他分隔符。相反,如果没有空格,则没有特别需要绝对逐位读取数字。这很简单。

您不应该强迫屏幕阅读器以您自己查看的方式阅读某些内容。其他人的愿景可能与您不同。关于数字,有些人更喜欢逐个数字地阅读,但其他人更喜欢将它们按两个、三个或四个分组,以便于阅读、书写和记忆。他们的屏幕阅读器通常进行相应配置。

如果给定的分组很重要,则必须用空格或其他字符分隔组。如果没有分隔,那么它隐含地意味着分组没有特别的重要性。

请注意,如果用户愿意,屏幕阅读器总是可以逐位读取数字。它通常不是默认值。逐位读取数字通常仅适用于非常大的数字(十亿),或者混合数字和字母时。

另外考虑:

  • 不同的屏幕阅读器用户有不同的偏好,从可访问性来说,违背偏好或常见默认设置通常是个坏主意
  • 有几个屏幕阅读器,以及多种语言的许多不同声音;在读取数字时,所有这些行为的行为方式都可能略有不同,任何为了调整它而进行的小改动都可能会产生比解决更多的问题。
  • 屏幕阅读器用户习惯于发音怪癖,他们可以使用个人词典来修复它们
  • 如今,屏幕阅读器在决定是否需要在孔中、成组或逐位读取数字方面并不那么糟糕。

因此,避免决定特定的分组或发音。这是一个坏主意,而且无论如何在技术上都是危险的。


推荐阅读