ARIA: alertdialog 角色

alertdialog 角色用於模態警報對話方塊,這類對話方塊會中斷使用者的正常工作流程,以傳達重要訊息並需要使用者響應。

描述

alertdialog 角色用於通知使用者緊急資訊,這些資訊需要使用者立即關注。在包含對話方塊的元素上新增 role="alertdialog" 可以幫助輔助技術識別內容是分組的,並且與頁面其他內容分離。例如,需要確認的錯誤訊息以及其他操作確認提示。

顧名思義,alertdialogdialogalert 角色的一種混合體。alertdialog 是一種 dialog,其使用場景與 alert 類似,但適用於需要使用者響應的情況。

注意: alertdialog 角色僅應用於具有相關互動控制元件的警報訊息。如果警報對話方塊僅包含靜態內容,完全沒有互動控制元件,請改用 alert 角色。

作為 dialog 角色的一種,dialog 角色的狀態、屬性和鍵盤焦點要求同樣適用於 alertdialog 角色。

由於其緊急性質,會中斷使用者工作流程,因此警報對話方塊應為 模態 的。

警報對話方塊必須至少包含一個可聚焦的控制元件 — 例如“確認”、“關閉”和“取消” — 並且在警報對話框出現時,焦點必須移到該控制元件上。警報對話方塊還可以包含其他互動控制元件,例如文字欄位和複選框。

alertdialog 角色不應被用作其他對話方塊的替代品,包括不需要確認的 alert 對話方塊(Window.alert())和提示(Window.prompt())。

僅新增 role="alertdialog" 並不足以使警報對話方塊可訪問。還需要完成以下操作:

  • 必須正確標記警報對話方塊
  • 必須正確管理鍵盤焦點

alertdialog 必須有一個可訪問名稱,該名稱使用 aria-labelledbyaria-label 定義。警報對話方塊文字必須使用 aria-describedby 具有 可訪問描述

關聯的 WAI-ARIA 角色、狀態和屬性

aria-labelledby

使用此屬性為 alertdialog 標示標題。aria-labelledby 屬性通常是用於為 alertdialog 命名的元素的 ID。

aria-describedby

使用此屬性來包含警報對話方塊內容的描述。aria-describedby 屬性的值通常是包含警報對話方塊訊息的元素的 ID,訊息通常緊跟在標題之後。

示例

示例 1:一個基本的警報對話方塊

html
<div
  role="alertdialog"
  aria-labelledby="dialog1Title"
  aria-describedby="dialog1Desc">
  <div role="document" tabindex="0">
    <h2 id="dialog1Title">Your login session is about to expire</h2>
    <p id="dialog1Desc">To extend your session, click the OK button</p>
    <button>OK</button>
  </div>
</div>

上面的程式碼片段展示瞭如何標記一個僅提供訊息和“確定”按鈕的警報對話方塊。

示例 2:帶有兩個選項的確認對話方塊

html
<div
  id="alert_dialog"
  role="alertdialog"
  aria-modal="true"
  aria-labelledby="dialog_label"
  aria-describedby="dialog_desc">
  <h2 id="dialog_label">Confirmation</h2>
  <div id="dialog_desc">
    <p>Are you sure you want to delete this image?</p>
    <p>This change can't be undone.</p>
  </div>
  <ul>
    <li>
      <button id="close-btn" type="button">No</button>
    </li>
    <li>
      <button id="confirm-btn" type="button" aria-controls="form">Yes</button>
    </li>
  </ul>
</div>
js
document.getElementById("close-btn").addEventListener("click", () => {
  closeDialog();
});
document.getElementById("confirm-btn").addEventListener("click", (event) => {
  deleteFile();
});

規範

規範
無障礙富網際網路應用程式 (WAI-ARIA)
# alertdialog

另見