【问题标题】:Force screen reader to read numbers as individual digits强制屏幕阅读器将数字读取为单个数字
【发布时间】:2020-02-27 14:35:07
【问题描述】:

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

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

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

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

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

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

有什么建议吗?

【问题讨论】:

  • onchange="this.value = this.value.replace(/\s+/, '').split('').join(' ')"
  • @QuentinC 是正确的,不要尝试这样做,除非您可以给出一个非常具体的理由,说明您认为应该尝试更改输出,您应该让屏幕阅读器做他们的事情,屏幕阅读器用户如果需要,可以使用控件一次读取一个字符。

标签: html accessibility screen-readers


【解决方案1】:

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

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

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

如果给定的分组很重要,则必须用空格或其他字符分隔组。如果没有分隔,则暗示分组没有特别的重要性。

请注意,如果用户愿意,屏幕阅读器始终可以逐位读取数字。它通常不是默认值。 逐位读取数字通常只针对非常大的数字(十亿)或混合数字和字母时进行。

另外考虑:

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

因此,请避免决定特定的分组或发音。这是个坏主意,而且在技术上也很危险。

【讨论】:

  • 感谢您的回复。我应该澄清一下,正在读取的数字将是 8 个数字(1000 万)。我理解你的意思,这是有道理的,但在这种情况下,我需要让数字逐位读出。有什么想法可以完成这项工作吗?
  • 除了添加空格之外,无法确保您的号码将被逐位读取。我自己是屏幕阅读器用户。如果我真的需要逐位读取数字,我总是有这种可能性,但默认情况下我不需要。你真的不应该把你读号码的方式强加给我,它可能不是我的。我会稍微更新一下我的答案。
  • 也许您可以提供更多背景信息,为什么您真的需要逐位读取数字?是帐号吗?电话号码?密码?这三个人都没有绝对需要imo。是不是比较经济?科学吗?在这种情况下,请认真考虑间距/分组。
  • @QuentinC 我有一个完全不同的问题,但谷歌把我发到这里...我有一个选择值 10 - 2021 - 50 等等。但是屏幕阅读器要么说ten twenty,要么通过10-20 (one zero two zero)。有没有办法让它拼写ten to twenty 或其他什么?我知道你说过我们不应该强迫屏幕阅读器以不同的方式拼写某些东西,但屏幕阅读器是否理解 10 - 20 (ten twenty) (10 20) -> ten twenty 之间的区别
  • 除非你明确写“10 到 20”,否则不用担心。上下文应该清楚地表明您正在选择一个范围。您可以使用 aria-label,但 1/它在 &lt;option&gt; 中不起作用,并且 2/它可能对您的情况完全没用。如果您想要更精确,请随时提出新问题。
【解决方案2】:

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

您尝试了 HTML 和 CSS,但无法使用 Javascript。屏幕阅读器使用辅助功能树。他们不使用 CSS,没有指示告诉他们拼写文本。他们可能会在阅读一些首字母缩略词时选择拼写一些缩写词。这是屏幕阅读器的选择。

屏幕阅读器用户习惯于听到奇怪的数字,如果他们希望一个字符一个字符地读取它们,他们有适当的快捷方式来自愿拼写它们。

【讨论】:

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