Alert
Demo 與 Accessibility Tree
Accessibility Tree
觀察對象:live region 容器。
元素目前不在無障礙樹中。
鍵盤操作
| 按鍵 | 行為 |
|---|---|
| (無) | Alert 不接收焦點也沒有自己的鍵盤操作。它出現時不得移動焦點或中斷使用者當下的動作 —— 這正是它與 Alert Dialog 的分界。 |
ARIA 屬性
| 屬性 | 值 | 用途 |
|---|---|---|
role | alert | 承載訊息的容器。它隱含 aria-live=assertive 與 aria-atomic=true,會打斷使用者當下的播報 —— 留給真正需要立刻知道的事。 |
(時機) | 動態更新 | role=alert 播報的是內容的變化。頁面載入時就帶著文字的 alert 不會被唸出來;整個容器被換掉時,部分螢幕閱讀器也會當成新節點而不播報。容器要先在 DOM 裡,訊息在同一個節點內更新。 |
(對照) | role=status | 不急的訊息用 status(隱含 aria-live=polite),它會等使用者當下的播報結束才開口。成功、已儲存這類訊息屬於這一類。 |
(名稱) | 無 | role=alert 的 nameFrom 只有 author —— 名稱不會從內容取得,所以 Accessibility Tree 上的 Name 永遠是空的。這不是缺漏:被播報的是內容的變化本身,不需要先報一個名稱。 |
aria-hidden | true | 紅點是純視覺,訊息的嚴重性已由文字本身表達。 |
WCAG 對應
- 等級 AA4.1.3 狀態訊息
狀態訊息要能在不取得焦點的前提下被輔助科技知曉。role=alert 正是為此存在。
- 等級 A3.2.1 取得焦點
警示出現時不得移動焦點,使用者手上的操作不能被搶走。
- 等級 AAA2.2.3 沒有時間限制
警示不應自動消失;若採限時關閉,必須保留足夠時間讓人察覺並讀完。
- 等級 AAA2.2.4 中斷
警示不能過於頻繁 —— 重複播報對視覺或認知障礙使用者是實質的妨礙。
APG 規則
- 狀態訊息
警示元件須具有 alert 角色語意
包含警示訊息的容器具有 role=alert。
- 狀態訊息
警示元件動態出現時,螢幕閱讀器需進行報讀
警示訊息需於頁面載入後動態顯示或更新,確保螢幕閱讀器能在訊息出現時進行報讀
- 狀態訊息
警示元件不會改變鍵盤的聚焦位置
顯示警示元件時,不得移動鍵盤焦點或中斷使用者操作
- 時間限制
警示元件不會在使用者讀取前自動消失
警示元件應設計成不會自動消失;若採限時關閉,訊息必須保留足夠時間,讓使用者能察覺並完整閱讀。
- 時間限制
警示元件不會過度頻繁打斷使用者
警示元件不會過於頻繁產生,以免重複報讀妨礙視覺或認知障礙使用者操作。