NVDA屏幕阅读器对HTML文本中日期、时长语义识别错误的ARIA标记咨询
NVDA屏幕阅读器对HTML文本中日期、时长语义识别错误的ARIA标记咨询
嗨,我来帮你搞定这个NVDA语义识别跑偏的问题~针对你遇到的日期读成纯符号分割、时长被误判成时间的情况,咱们可以用HTML语义化标签+ARIA属性明确告诉屏幕阅读器内容的真实含义,具体方案如下:
日期的语义化修正
用<time>标签搭配datetime属性是最标准的做法,把日期转换成机器能识别的ISO格式,NVDA就能正确识别并朗读成日期了,不会再读成slash。示例代码:<time datetime="2023-11-28">Tue 28/11/23</time>这样NVDA会根据系统语言设置,把它读成类似“Tuesday, November 28, 2023”的规范日期格式,而不是生硬的符号分割。
统一时长的语义标注
既然所有的X Hours后的数值都是时长,咱们可以用两种方式明确语义:
第一种是直接用aria-label指定朗读内容,强制NVDA按时长朗读:<span aria-label="First Hours 6 hours 0 minutes">First Hours 6:00</span> <span aria-label="Second Hours 0 hours 0 minutes">Second Hours 0:00</span>第二种是用
<time>标签的时长格式(ISO 8601时长标准,比如PT6H0M代表6小时0分),让屏幕阅读器自动识别为时长:<time datetime="PT6H0M">First Hours 6:00</time> <time datetime="PT0H0M">Second Hours 0:00</time>两种方式都能避免NVDA把0:00误判成零点时间。
表格行列的语义优化
从你提供的内容来看,这应该是表格里的单元格内容,最好把整个结构放在<table>里,用<th>配合scope属性标记行和列的归属,这样NVDA能更清晰地理解内容的上下文,朗读逻辑也更通顺。示例:<table> <tr> <th scope="row">row 9</th> <td><time datetime="2023-11-28">Tue 28/11/23</time></td> <td><time datetime="PT6H0M">First Hours 6:00</time></td> <td><time datetime="PT0H0M">Second Hours 0:00</time></td> <td><time datetime="PT0H0M">Third Hours 0:00</time> <span>column 7</span></td> </tr> </table>
要是你不想改动页面的视觉显示,完全可以只通过ARIA属性调整朗读内容,比如给日期元素加aria-label="Tuesday 28 November 2023",屏幕阅读器会读你指定的内容,页面显示还是原来的格式。
备注:内容来源于stack exchange,提问作者tony
相关产品推荐
相关产品推荐

