本文へ移動
easeweb
ご相談
トピックを検索

質問が読み上げられない確認ダイアログ

削除の確認ダイアログに名前がなく、説明も関連付けられていないため、スクリーンリーダーはフォーカスのある「プロジェクトを削除」ボタンしか読み上げません。

WCAG 2.2
SC 4.1.2ASC 2.4.3A
必須とする規格
Section 508 · EN 301 549(EU) · JIS X 8341-3
問題あり <div class="confirm" role="dialog" aria-modal="true">
アクセシビリティの問題を示した図: フォーカスは「プロジェクトを削除」にあるのに、見出しも説明も読まれない。
01

問題

スクリーンリーダーの利用者は、何が消えるのかを聞かないまま「プロジェクトを削除」に置かれます。

02

試してみる

Tabで「削除」ボタンへ移動してEnterを押し、続けてもう一度Enterを押してください。

ダイアログが開いたときにどのボタンにフォーカスがあるかを見て、スクリーンリーダーの読み上げを確認してください。削除した後は、フォーカスの位置を確かめてください。

問題あり 修正できますか?

プロジェクト

  • 春のキャンペーン · 24ファイル
  • 年次報告書 · 9ファイル
  • チームの写真 · 132ファイル

スクリーンリーダーの読み上げ:

(Tabで「削除」へ移動してEnter)

再現デモです。「問題あり」は意図的にアクセシブルでない状態にしています。

03

修正方法

見出しでダイアログに名前を付け、説明を関連付け、「キャンセル」から始め、削除後はページに残る場所へフォーカスを移します。

  1. 1aria-labelledbyで見出しを指し、ダイアログに名前を付ける。
  2. 2説明をaria-describedbyで関連付け、最初のフォーカスは「キャンセル」に置く。
  3. 3項目が消えた後は、ページに残る要素へフォーカスを移す。
修正前 質問が読まれない確認ダイアログ
<div id="page">  <h2>プロジェクト</h2>  <ul>    <li data-name="春のキャンペーン" data-files="24">      春のキャンペーン・24ファイル <button type="button" class="delete">削除</button>    </li>    …  </ul></div> <div class="confirm" role="dialog" aria-modal="true" hidden>  <h2 class="confirm-title">「春のキャンペーン」を削除しますか?</h2>  <p class="confirm-message">プロジェクトと24個のファイルを削除します。元に戻せません。</p>  <button type="button" class="cancel">キャンセル</button>  <button type="button" class="ok">プロジェクトを削除</button></div>
修正後

HTML標準のdialog要素

<div id="page">  <h2 id="projects-heading" tabindex="-1">プロジェクト</h2>  <ul>    <li data-name="春のキャンペーン" data-files="24">      春のキャンペーン・24ファイル <button type="button" class="delete">削除</button>    </li>    …  </ul></div> <dialog id="confirm-delete" role="alertdialog"  aria-labelledby="confirm-title" aria-describedby="confirm-message">  <form method="dialog">    <h2 id="confirm-title">「春のキャンペーン」を削除しますか?</h2>    <p id="confirm-message">プロジェクトと24個のファイルを削除します。元に戻せません。</p>    <button value="cancel" autofocus>キャンセル</button>    <button value="delete">プロジェクトを削除</button>  </form></dialog>

この方法を選ぶ理由:まずHTMLの要素を使う

AI コーディングアシスタントで修正しますか? このガイドを Markdown で取得

04

修正の確認

マウスを使わない5つの確認

確認方法: キーボード、スクリーンリーダー、ズーム、強制配色

5件中0件を確認済み

OS、ブラウザーと支援技術のバージョン、ビルド、実施日、各手順の実際の結果を記録してください。共通のダイアログコンポーネントを変更した際は、再度確認します。

制限

このサンプルは、どのアプリケーションでも同じ結果になることを保証するものではありません。削除はページ上だけで行い、サーバーへの送信やそのエラー、失敗したときの処理は省略しています。alertdialogをどこまで自動で読み上げるかはスクリーンリーダーによって異なるため、実際に使用する支援技術で操作全体を確認してください。

よくある問題を再現した学習用のサンプルです。実在のクライアントの診断結果ではありません。コードは出発点となる実装例のため、実際の製品でも確認してください。ここでは支援技術でのテスト結果は報告していません。

コードを更新しても、使いやすさを保つために

ガイドの内容を、コーディングエージェントやCIで使える開発ルールにまとめます。更新後は、キーボードとスクリーンリーダーで再テストし、問題が再発していないか確認します。

再テストの進め方