ARIA: aria-busy 属性

aria-busy 属性是一个全局 ARIA 状态,用于指示一个元素当前是否正在被修改。它有助于辅助技术理解内容更改尚未完成,并且它们可能希望等待一段时间后再通知用户更新。虽然 aria-busy 通常用于 ARIA 实时区域 中,以延迟播报直到更新完成,但它也可以在实时区域之外使用——例如,在小部件或信息流中——来指示正在进行的更改或加载。

当实时区域的多个部分需要在对用户播报更改之前加载完成时,请将 aria-busy="true" 设置为完成加载。然后设置为 aria-busy="false"。这可以防止辅助技术在更新完成之前播报更改。

描述

有一部分内容会更新。这些更新很重要,您希望在内容修改后让用户知道,因此您已将其转换为 ARIA 实时区域,并带有 aria-live 属性。您可能想同时更新该部分的几个组件,但您无法确定所有组件都会同时更新。即使这是一个非常重要的具有 aria-live="assertive" 的实时区域,您也不希望在内容的各个部分加载时多次打断用户。这就是 aria-busy 可以提供帮助的地方。

aria-busy 属性是实时区域的一个可选属性,其值可以是 truefalse。值为 truearia-busy 属性可以添加到当前正在更新或修改的元素上,以告知辅助技术,它应该等待修改或更改完成后再将内容呈现给用户。当下载完成后,使用对象的 ariaBusy 属性将值更改为 false

js
ariaLiveElement.ariaBusy = "false";

aria-live 的值决定了在将值更改为 false 后是立即播报更改,还是辅助技术会等到当前任务完成后再打断用户。

feed

如果具有 feed 角色的元素设置了 aria-busytrue,那么 feed 内部发生的渲染更改将不会被播报,用户发起的更改除外。

widget

如果渲染 widget 的更改会导致在脚本执行期间 widget 缺少必需的拥有元素的状态,请在更新过程中将 widget 的 aria-busy 设置为 true。例如,如果一个渲染的树形网格同时更新多个未同时渲染的分支,那么替代一次性替换整个树的方法是,在修改每个分支时将树标记为 busy。

false (默认)

元素没有预期的更新。

true

元素正在更新。

相关接口

Element.ariaBusy

ariaBusy 属性是每个元素接口的一部分,它反映了 aria-busy 属性的值,该属性指示元素当前是否正在被修改。

html
<div
  id="clock"
  role="timer"
  aria-live="polite"
  aria-atomic="true"
  aria-busy="false"></div>
js
const el = document.getElementById("clock");
console.log(el.ariaBusy); // false
el.ariaBusy = "true";
console.log(el.ariaBusy); // true

相关角色

用于 **所有** 角色

规范

规范
无障碍富互联网应用程序 (WAI-ARIA)
# aria-busy

另见