实时区域
ARIA Live Region
别名:实时区域实时播报播报区域读屏播报aria-livelive region
这是什么
在页面上预留一块播报区,内容动态更新时把消息念给屏幕阅读器,而不移动焦点。保存成功、筛选结果数、异步校验这类「看得见变了但焦点没动」的信息,读屏用户不靠它就会漏掉。
名词辨析
aria-live 是不打断焦点的后台播报,modal 是抢走焦点的强制阅读——都在传达更新,一个插话,一个拦路。
交互实验室
试一试,再决定怎么用正在加载实验室…
✓ 适用场景
- 操作结果反馈(已保存、已复制、已提交)
- 异步结果与筛选计数等无焦点移动的更新
- 表单校验错误需要在字段之外被朗读
✕ 不适用场景
- 用播报区代替把焦点移到错误字段(字段级错误仍要 focus)
- 高频连续插入导致读屏被消息刷屏
- 必须被立即处理的阻断性错误只用 polite
常见形式
礼貌播报
Polite live
aria-live="polite",等用户停顿再念,适合一般结果
紧急打断
Assertive alert
aria-live="assertive" / role="alert",立刻打断,仅限关键警告
状态播报
Status
role="status",隐含 polite,适合加载与完成状态
实现要点
aria-liverole="status"role="alert"aria-atomic实时区域必须预先存在于 DOM(空容器即可),再更新文本内容——动态创建的 live region 常常不会被朗读。role="status" 与 role="alert" 自带隐含 aria-live,不必重复声明。aria-atomic="true" 保证整块重读;同一区域连续更新时先清空再写入,避免被合并。视觉隐藏用 sr-only 但保持可朗读。
平台 API
aria-liverole="status"role="alert"aria-atomic代码里叫什么
同一控件在不同体系里的叫号——用对名字,Prompt 和检索才准。
| 体系 | 名称 |
|---|---|
| WCAG | 4.1.3 Status Messages |
| MDN | ARIA live regions |
相关概念
在视口角落短暂出现、自动消失的小消息条,用来告知操作结果(已保存、已复制、上传完成)。 不打断当前流程,通常附一个操作入口(撤销、查看),停留约 3~5 秒后淡出。
组件搭配使用嵌在页面流内、带状态色底色的横条,用于必须被看见的消息:错误、警告、重要通知。 它占据文档流而不是覆盖内容,通常常驻直到问题被处理或用户手动关闭。
组件搭配使用在用户填写表单的过程中或提交时检查输入合法性,并把错误就地显示在对应字段旁边。 目标是让用户在离错误最近的位置、以最小的打断成本知道"哪里错了、怎么改",而不是提交后被一整个错误页打回。
交互模式搭配使用容易混淆
modal 抢占焦点强制阅读,aria-live 在不夺走焦点的前提下朗读更新。