如何向屏幕阅读器指示时间是小时和分钟,而不是分钟和秒?

时间:2018-02-13 01:17:45

标签: html accessibility jaws-screen-reader

我在网页上有以下标记片段:

Time spent: <span id="time_spent">00:02</span>

JAWS将此读作“结果零分钟和两秒钟的时间”。我如何向JAWS表明这应该被理解为“零小时两分钟”(或仅仅是“两分钟”)?理想情况下,任何解决方案也可以与其他屏幕阅读器一起使用。

3 个答案:

答案 0 :(得分:4)

要在语义上将时间表示为时间,请使用<time> element

Time spent: <time id="time_spent">00:02</time>

您需要提供datetime属性,以便表明时间代表valid duration string的时间跨度:

Time spent: <time id="time_spent" datetime="0h 2m">00:02</time>

答案 1 :(得分:1)

一些选项:

使用<time datetime="00:00">(这应该给您HH:MM,according to MDN)。

-或-

将时间转换为人类可读的字符串,然后将该字符串插入aria-label属性中,例如<span role="timer" aria-label="zero minutes, two seconds">00:02</span>。我在这种方法上取得了成功,但需要注意的是,不同的(人类)语言将需要自己的“翻译时间字符串”代码。

如果您使用除<time>元素之外的任何内容,则应该添加role="timer"来使语义明确。

答案 2 :(得分:1)

上面关于语义的建议仍然存在,但是不幸的是,实际上您对屏幕阅读器实际宣布它的方式几乎没有影响。 这在很大程度上取决于所使用的语言和语音合成器。

在我的情况下,Jaws 2019,口才,法语,“ 0:02”被告知为“zéroheure deux” =>“零时两个” 告诉“ 0:02:00” =“零时两个零零”。具有声音Audrey的iOS 13.1.2上的VoiceOver也是如此。 口才相同的Jaws 2019(英语,美国)说“零或二”。如您所见,在某些情况下,格式没有得到特别的解释。

但是,我不会说更改为更明确的内容(例如“ 0小时2分钟”,“ 0hrs2min”或“ 0h2m”)会更好。 遇到时说“小时”代替“小时”,用“分钟”代替“分钟”在很大程度上取决于语言,合成器和用户词典,如“ 00:02”。 因此,在某些情况下两者都可以正常运行,而在其他情况下则可以崩溃。

诸如“ min”之类的缩写有时甚至会产生问题,因为“ min”也可以视为“ minimum”。请记住,语音合成器不会尝试进行任何意义或上下文分析。

完全明确的“ 0小时2分钟”也不是很好。我自己是瞎子,我可以告诉你:这很清楚,但是,实际上,我们习惯于听到“零时两个”,因为到处都写着“ 0:02”。 我们都已经习惯了这种语音合成器的怪癖,基本上我们并不介意。

在这种特殊情况下,给定上下文,我们足够聪明地知道“零o二”表示两分钟还是两秒,而“ 3hrs”或“ 3h”表示3个小时。 无论如何,在任何情况下都没有完美的选择,因此请不要挠头,并采用最适合您的应用程序的格式。