有没有办法为屏幕阅读器指定文本为“时间”?(JAWS / Web-Aim)

3
如果JAWS在我的页面中遇到这样的时间:
<div>
  <span>20:15</span> <!-- either of these times -->
  <span>04:15</span> <!-- either of these times -->
</div>

然后它会将它们读作“二十点十五分”,这并不像一个时间。有没有办法指定这是一个时间?

也许将被平均用户阅读但看不到的文本放置为“二十点十五分钟”或其他类似的内容可能是一个可行的答案。
2个回答

5

有没有办法指定这是一个时间?

HTML5提供了time元素和它的datetime属性

我无法测试JAWS是否识别它,但如果不识别,那就太遗憾了(他们应该肯定会修复这个问题)。

对于时间“20:15”,标记可以如下:

<time>20:15</time> 
<!-- because "20:15" is a valid time string -->

<time datetime="20:15">20:15</time>
<!-- the datetime attribute is not needed here -->

<time datetime="20:15"></time>
<!-- could have any content, as long as the datetime attribute contains a valid time string -->

2
这并不保证时间会被说出来有所不同。辅助功能API的映射将其纯粹映射为静态文本http://www.w3.org/TR/html-aam-1.0/#el-time - unobf

2

从语义上讲,您应该使用带有title属性的<abbr>元素。问题在于屏幕阅读器默认情况下不会朗读缩写。

为了解决这个问题,您可以结合使用aria-hidden和离屏技术,例如:

  <span aria-hidden="true">20:15</span>
  <span class="offscreen">Twenty colon fifteen o'clock</span>

离屏是什么:

.offscreen {
    border: 0;
    clip: rect(0 0 0 0);
    clip: rect(0, 0, 0, 0);
    height: 1px;
    margin: -1px;
    overflow: hidden;
    padding: 0;
    width: 1px;
    position: absolute;
}

根据ARIA规范,这些技术应该可以使用,但(就像所有ARIA一样),您需要测试它们以查看它们在实践中是否真正有效。 20:15

谢谢您的建议,我在过去几个小时中广泛使用了缩写标签,并发现这比离屏文本更好。 - Taylor C. White
@TaylorC.White 你测试过它们了吗? - unobf
是的,我的屏幕阅读器默认情况下不会读取缩写词,但我打开它后,它可以正常朗读。 - Taylor C. White
如果您要依赖该功能,您应该发布一个辅助功能声明,告知用户需要哪些非默认设置才能使用您的应用程序。这应该包含在应用/网站的帮助和/或支持区域中。 - unobf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接