summary属性在html5中已被废弃,现代屏幕阅读器不再读取它;应改用caption、scope和headers等语义化属性提升表格可访问性。

summary 属性在 table 中早已被废弃,别再用了
HTML5 明确废除了 summary 属性,现代屏幕阅读器(如 NVDA、JAWS、VoiceOver)已基本不读取它。继续写 <table summary="用户基本信息表"> 不仅无效,还会让代码显得过时,还可能干扰辅助技术对表格语义的正确解析。
<h3>替代方案:用 caption + scope / headers 实现真正的可访问性</h3>
<p>屏幕阅读器依赖的是结构化的语义,不是隐藏摘要。真正起作用的是:</p>
<ul><li>
<code><caption></caption>:必须放在 <table> 内第一子元素位置,直接声明表格用途(如 <code><caption>2024 年各地区销售额汇总</caption>);
scope 属性:用于 <th>,标明该表头控制哪一行/列(<code>scope="row" 或 scope="col"),尤其适用于简单表格;
headers 属性:用于 <td>,显式关联多个复杂表头(如跨行跨列的表头),需配合 <code>id 使用。
常见错误:把 summary 当成“SEO 描述”或“后台注释”
有人误以为 summary 能提升 SEO 或给开发者留备注,实际:
- 搜索引擎不索引
summary,也不将其视为内容; - 它不会出现在 DOM 中供 JS 读取(浏览器已忽略该属性);
- 若强行保留,部分旧版 JAWS 可能报错或静默跳过整个表格;
- VS Code 或 HTMLHint 会标记为“obsolete attribute”,CI 流程可能失败。
检查与修复建议
快速确认你的表格是否可访问:
- 用 VoiceOver(macOS)或 NVDA(Windows)打开页面,聚焦到表格,听是否先读出
<caption></caption>内容; - 运行 axe 浏览器插件扫描,重点看 “Table header association” 和 “Missing caption” 问题;
- 删除所有
summary=,把原摘要文字精炼后移入<caption></caption>; - 对无
<caption></caption>的数据表格,至少补上<caption><span class="sr-only">...</span></caption>,配合 CSS 隐藏但保留可访问性。
真正的可访问性不在隐藏字段里,而在清晰的结构和明确的关联关系中。删掉 summary 是第一步,后面每加一个 scope 或 headers,都比空挂一个废弃属性管用得多。











