跳到主要內容

Alert Dialog

Demo 與 Accessibility Tree

Accessibility Tree

觀察對象:開啟中的警示對話框。 下列是操作之後會量到的值。

Role
alertdialog
Status
(無狀態)
Name
確定要刪除帳號嗎?
Description
刪除後所有資料將立即永久移除,無法復原。

確定要刪除帳號嗎?

刪除後所有資料將立即永久移除,無法復原。

鍵盤操作

按鍵行為
Enter / Space在觸發按鈕上開啟警示對話框。
Tab在對話框內的控制元件之間循環,不會跑到背景內容。
Shift + Tab反向循環,同樣被限制在對話框內。
Esc關閉對話框,焦點回到原本的觸發元素。警示對話框也必須能用 Esc 離開 —— 它要求回應,但不能把人困住。

ARIA 屬性

屬性值用途
rolealertdialog與 dialog 的差別:輔助科技把它當成警示來處理,開啟時會連同 aria-describedby 的內容一起播報,而不是只唸出標題。用在內容本身就是警告或錯誤、且需要立即回應的時候。
aria-modaltrue明寫而非依賴 showModal() 的隱含值。APG 對警示對話框要求明確設定 —— 隱含值在 DOM 上看不到,用檢查工具的人會以為漏了。
aria-labelledby標題元素的 id名稱取自可見標題,看到的和聽到的是同一份文字。
aria-describedby警示訊息的 id這裡是必填,不像一般 Dialog 可有可無 —— 警示訊息就是這個元件存在的理由,不關聯起來「警示」兩個字就沒有內容。
(焦點)影響最小的控制元件開啟時焦點落在「取消」而非「永久刪除」。破壞性動作旁邊若預選了破壞性按鈕,一個 Enter 就回不來了。
(舊式)aria-hidden=true在不支援 <dialog> 的環境改用舊式做法時,要在每個背景層元素上各自設定,而且警示對話框絕不能落在任何 aria-hidden=true 元素的子階層裡。
aria-hiddentrue頂部紅色裝飾條是純視覺,不應進入無障礙樹。

WCAG 對應

  • 標題與訊息分別以 aria-labelledby 與 aria-describedby 關聯,不是只靠視覺上的前後排列。

  • 焦點被限制在對話框內,但 Esc 一定能離開。要求回應不等於可以把人困住。

  • 開啟時焦點進入對話框並落在影響最小的控制元件上,關閉時回到觸發它的按鈕。

  • 不可逆的動作要可以復原、可以檢查、或可以確認。警示對話框正是「確認」這一條路 —— 而預設焦點放在取消鈕上,是讓確認真的成為一個決定而不是慣性。

  • role=alertdialog、名稱、說明、aria-modal 四者齊備。

APG 規則

  • 元件語意

    警示對話框具有 alertdialog 角色語意

    包含警示訊息與所有按鈕的容器,須指定 role=alertdialog 。

  • 元件語意

    警示對話框開啟時具有 modal 語意

    警示對話框的容器須設定 aria-modal=true。

  • 焦點管理

    警示對話框開啟時會遮擋背景內容

    警示對話框開啟時,對話框外的背景內容在視覺上被遮蔽或淡化。

  • 元件語意

    警示對話框具有無障礙名稱

    警示對話框須以 aria-labelledby 關聯可見標題;若無可見標題,則須設定 aria-label

  • 元件語意

    警示對話框具有警示訊息提供的無障礙補充說明

    警示對話框須以 aria-describedby 關聯警示訊息內容,以提供無障礙說明

  • 元件語意選做

    使用舊式 aria-hidden 時,應隱藏背景內容並保留警示對話框

    若使用舊式 aria-hidden 對輔助科技隱藏停用的背景,需將背景區塊皆設定 aria-hidden=true,且警示對話框絕不可位於任何 aria-hidden=true 元素的子階層中。

  • 焦點管理

    警示對話框開啟時無法操作背景區域

    警示對話框開啟時,程式會阻止所有使用者操作對話框外的內容。

  • 焦點管理

    警示對話框開啟時,焦點移入其中

    開啟警示對話框時,焦點需移至內部合適的元素;例如執行不可逆操作時,應優先聚焦於影響最小的控制元件或最常使用的控制元件。

  • 焦點管理

    警示對話框開啟時,Tab 焦點限制在對話框中

    Tab 鍵與 Shift+Tab 鍵僅能在對話框內的可聚焦元件間切換,且會在首尾元件間循環

  • 鍵盤操作

    按下 Esc 鍵可關閉警示對話框

    按下 Esc 鍵關閉警示對話框

  • 焦點管理

    關閉警示對話框後需恢復到原先的焦點位置

    關閉警示對話框後,焦點回到原觸發元素;若該元素已不存在,或有更符合操作流程的位置,則移至該新元素。

  • 鍵盤操作

    警示對話框的互動元件可正常操作

    警示對話框提供可操作的控制元件,讓使用者回應重要訊息或確認要求。