如何在不触发屏幕的情况下聚焦元素 reader

How to focus an element without triggering screen reader

我目前正在开发一个应该可以访问的日期选择器。

如果用户正在查看月历,则可以看到上个月的一些日期和下个月的一些日期。一旦用户点击当前月份以外的月份,日历将更改为该月份,然后突出显示点击的日期。在此过程中,旧的日期网格被新的日期替换,新网格中单击的日期也获得焦点。我的问题是屏幕阅读器会在旧网格中单击时读取日期,但是一旦重新创建网格并且聚焦日期,它就会再次读取。

这是我可以预防的事情吗?

很高兴您正在尝试解决用户体验问题,为屏幕 reader 用户带来更愉快的体验,但听到内容被读两遍是一个非常小的问题。如果那是您页面上唯一的可访问性问题,那就太好了。 (从技术上讲,听到两次不是可访问性问题,或者至少不是 WCAG 问题。)

我喜欢你将注意力集中在选择的日期上,即使它在不同的月份。

解决此问题的一种可能方法(这相当复杂)是使新日期对象暂时从屏幕上隐藏 reader。在元素上设置 aria-hidden="true",但是在页面有足够的时间让屏幕 reader 显示隐藏属性后,您需要一个计时器来删除 aria-hidden 属性。