aria-live
全域性 aria-live 屬性指示元素將更新,並描述使用者代理、輔助技術和使用者可以從即時區域中期待的更新型別。
描述
當內容在初始載入後發生變化時,輔助技術 (AT) 使用者可能無法“看到”這些變化。一些變化很重要,另一些則不重要。aria-live 屬性使開發人員能夠告知使用者更新,並根據重要性和緊急程度選擇是否立即、主動或被動地將內容的變化告知 AT 使用者。
如果螢幕的一部分更新,如果它的樣式使其顯眼,大多數視力正常的使用者通常會注意到即時更新。另一方面,螢幕閱讀器一次只關注頁面的一個部分;並且該部分可能不是更新所在的位置。aria-live 屬性為開發人員提供了一種方法,可以根據開發人員設定的事件觸發器(而不是使用者發起的操作)來向 AT 宣佈此類更改,以便他們意識到內容已更改。
<div id="announce" aria-live="polite"></div>
aria-live 屬性設定在空元素上。當頁面發生更新時,具有該 aria-live 屬性的空元素應更新,幷包含簡短的公告,告知使用者已進行更新。
<div id="announce" aria-live="polite">
<p>This message is announced.</p>
</div>
當可訪問性 API 識別到對上述即時區域的更改時,它將根據屬性的值宣佈該即時區域的內容。不會使該元素獲得焦點。
如果要讀取即時區域的所有內容,請使用 aria-atomic。使用 aria-relevant 來定義僅需要重新讀取給使用者的更新部分。使用 aria-busy 來防止在更新仍在進行時進行公告。
選擇 aria-live 值
由於某些輔助技術使用者無法“看到”即時更新,因此 aria-live 屬性用於定義使用者應瞭解哪些更新的資訊
- 立即瞭解的,
- 如果有機會,則告知他們,以及
- 主動告知他們,但他們可以選擇何時關注更新的區域。
aria-live 的值描述了使用者代理、輔助技術和使用者可以從即時區域中期待的更新型別,並用於表達重要程度。
當 aria-live 的屬性設定為 polite 時,輔助技術會將更新通知使用者,但通常不會中斷當前任務,更新的優先順序較低。當設定為 assertive 時,輔助技術會立即通知使用者,可能清除先前更新的語音佇列。
螢幕閱讀器在載入頁面時會緩衝內容。因此,在構建初始可訪問性樹後新增的內容可能不會被注意到,因為 AT 使用者在動態小部件填充之前就開始使用內容 - 使用者可能不知道頁面或檢視正在更新的內容,因為小部件載入完成。在這種情況下,您可以透過設定 aria-live="polite" 來讓使用者知道頁面已更新。
完全填充的頁面也可能更新。例如,內容如即時體育比分、新聞捲軸和股票市場行情。除非此類更新是頁面的主要功能,否則您可能不想在每次更新時都告知使用者,但確實想告知他們小部件確實已更新。在此,您將設定 aria-live="off"。在這種情況下,沒有理由在使用者不關注即時區域時通知他們更新。
某些即時更新很重要且時間敏感。例如,如果您正在銷售音樂會門票,使用者只有有限的時間來購買,那麼您不想等到活動間隙才告訴他們時間快到了(或已經過了)。當需要儘快告知時,請設定 aria-live="assertive"。如果更新的資訊是 alert,則不需要 aria-live 屬性。
在這種限時情況下,為了可訪問性,您還需要為使用者提供延長可用時間或完全關閉計時器的方式。
使用 aria-live
活動區域包括元素及其所有後代。當未設定更新內容時,aria-live 的值來自具有有效 aria-live 屬性值設定的最近祖先。當設定為 off,或當在更新的元素和 DOM 樹中的所有祖先節點上完全省略該屬性時,不會通知使用者。但是,如果使用者導航到活動區域,他們仍然可以聽到更新。
警告:由於中斷可能會讓使用者迷失方向或導致他們無法完成當前的任務,因此除非中斷是必要的,否則不要使用 assertive 值。
值
關聯介面
Element.ariaLive-
ariaLive屬性是Element介面的一部分,反映了aria-live屬性的值。 ElementInternals.ariaLive-
ariaLive屬性是ElementInternals介面的一部分,反映了aria-live屬性的值。
關聯角色
在**所有**角色中使用。
規範
| 規範 |
|---|
| 可訪問的富網際網路應用 (WAI-ARIA) # aria-live |