You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 07:08:08