HTML怎样定义文档的可访问名称_HTML定义文档可访问名称属性【属性】

2次阅读

文档的可访问名称即 元素内容,是屏幕阅读器默认读出的首句;它必须存在、非空、清晰包含站点名与页面核心信息,且 spa 中需同步更新并配合 aria-live 提示。

HTML怎样定义文档的可访问名称_HTML定义文档可访问名称属性【属性】

html 文档本身没有“可访问名称”这个属性;可访问名称是给元素(尤其是交互控件)用的,不是给整个文档定义的。所谓“文档的可访问名称”,实际是屏幕阅读器读出的页面标题,它来自 <title></title> 元素内容,而不是某个叫“accessibility name”的 HTML 属性。

为什么 <title></title> 决定屏幕阅读器说的第一句话

当用户打开页面,NVDA、VoiceOver 等工具默认先读出 <title></title> 文本——这是唯一被所有主流辅助技术一致支持的“文档级可访问名称”。它不依赖 ARIA,也不需要 JavaScript,是最低成本、最高兼容性的入口标识。

  • <title></title> 必须存在,且不能为空(否则屏幕阅读器可能 fallback 到 URL 或报“无标题”)
  • 不要写成 <title>首页</title> 这类模糊表述;应包含站点名 + 当前页核心信息,例如 <title>购物车 — 淘宝网</title>
  • 服务端渲染或单页应用中,路由切换时必须同步更新 <title></title>,否则用户会误以为没跳转成功

aria-labelaria-labelledby 不作用于

你不能给 标签加 aria-label 试图“定义文档名称”——规范明确禁止对根元素使用这些属性,浏览器和读屏器会直接忽略。同样, 也不是合法目标。

  • aria-label 只对可聚焦/交互元素(如 <button></button><a></a><input>)生效
  • 若强行写 ,DevTools 里能看到属性,但 NVDA 不会读它,也不会影响任何可访问性指标
  • 想让整页有语义上下文?靠的是合理的 heading 结构(<h1></h1>)、<main></main> 区域标记,以及上面说的 <title></title>

单页应用(SPA)里最容易漏掉的更新点

React/Vue 项目常通过 document.title = ... 动态改标题,但这只是 dom 更新,部分旧版读屏器(比如 IE11 + JAWS)不会监听该变化,必须触发一次焦点重置或发送 aria-live 提示。

立即学习前端免费学习笔记(深入)”;

  • 推荐组合:改 document.title + 在 <main></main> 上加临时 aria-live="polite" 并更新 innerText(如 “页面已切换到订单列表”)
  • 不要依赖 history.pushState() 自动触发读屏;它只改 URL,不触发任何可访问性事件
  • 测试时务必关闭浏览器标签页预加载(chrome 的 “Prerender pages” 设置),否则读屏可能读取的是上一页的 <title></title>

真正影响“用户第一印象”的,就只是那一行 <title></title>。别的都得往后排——包括你刚写的那 aria-* 属性。别在根元素上浪费调试时间。

text=ZqhQzanResources