NVDA屏幕阅读器自上而下导航忽略aria-current="date"属性问题咨询
问题原因
这是NVDA屏幕阅读器双向导航时的元素语义解析逻辑差异导致的:
- 自上而下按Tab导航时,NVDA优先读取可交互元素的内置原生语义,你当前的代码同时给父容器和内部可聚焦的日期元素加了
aria-current="date",属性冗余冲突会导致NVDA直接跳过该属性的播报。 - 自下而上导航时NVDA按DOM节点逆向遍历,会优先读取节点上显式声明的ARIA属性,所以该状态可以被正常识别。
修复方案
- 移除冗余属性:不要给父级不可聚焦的容器加
aria-current,仅在实际可聚焦的交互元素(也就是你的input[type=date]或者日历组件的可选中日期单元格)上声明aria-current="date"即可,避免属性冲突。 - 加兜底播报适配:如果单独声明
aria-current还是存在兼容问题,可以给可聚焦元素补充组合标注,比如aria-label="当前日期:{{实际展示的日期文本}}",同时保留aria-current="date"属性适配其他屏幕阅读器,注意不要和原生日期的播报内容重复。 - 校验焦点逻辑:不要给父容器加
tabindex属性,确保Tab导航时焦点直接落到内部的日期交互元素上,避免焦点错位导致属性识别异常。
修正后的代码示例
<tag attribute1 attribute2 > <input attribute1 type="date" aria-current="date" attribute2 more attributes > </tag>
修改后可以按NVDA+Tab快捷键查看当前聚焦元素的完整属性播报,确认双向导航都能正常识别当前日期状态。
内容的提问来源于stack exchange,提问作者nishitha surapudi
相关产品推荐
相关产品推荐

