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

キーボードで閉じられないポップアップ

会員登録を勧めるポップアップがTabキーを内側に留めたままEscapeキーに反応せず、×もspanで描かれているため、キーボードでは登録しないかぎり閉じられない

WCAG 2.2
SC 2.1.2A
必須とする規格
Section 508 · EN 301 549(EU) · JIS X 8341-3
問題あり <span class="popup-close">×</span>
アクセシビリティの問題を示した図: 手の操作:どうやって閉じるの?
01

問題

キーボードの利用者が会員登録のポップアップを閉じられず、登録しないかぎり背後のページを見られない

02

試してみる

Tabでショップのページに入り、開いたポップアップをキーボードだけで閉じてみましょう

Tab、Shift + Tab、Escapeを試してください。フォーカスは×に届きますか?

修正を適用してもう一度試し、ポップアップが閉じた後のフォーカスの位置も確かめてください。

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

問題×にTabキーが届かないポップアップ

Juniper Ceramics

今週の新作

ひとつずつ手で挽き、少量ずつ釉薬をかけた、斑点模様の炻器です。

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

03

修正方法

×を名前のあるボタンにし、showModal() かキー操作の処理で、Escapeキーでポップアップを閉じる

  1. 1フォーカスを留めるポップアップは、Escapeキーで閉じる
  2. 2閉じるボタンは名前のあるボタンにし、Tabキーで届くようにする
  3. 3閉じたら、利用者がいた場所へフォーカスを戻す
修正前 ×にTabキーが届かないポップアップ
<div class="popup-overlay" hidden>  <div class="popup" role="dialog" aria-modal="true" aria-labelledby="popup-title">    <span class="popup-close">×</span>    <h2 id="popup-title">初回のご注文が10%オフ</h2>    <p>新作やセールのお知らせをお届けします。</p>    <form class="popup-form">      <label for="popup-email">メールアドレス</label>      <input id="popup-email" name="email" type="email" autocomplete="email" required>      <button>登録する</button>    </form>  </div></div>
修正後

HTML標準のdialog要素

<dialog class="popup" aria-labelledby="popup-title">  <button type="button" class="popup-close" aria-label="閉じる">×</button>  <h2 id="popup-title">初回のご注文が10%オフ</h2>  <p>新作やセールのお知らせをお届けします。</p>  <form class="popup-form">    <label for="popup-email">メールアドレス</label>    <input id="popup-email" name="email" type="email" autocomplete="email" required>    <button>登録する</button>  </form></dialog>

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

04

修正の確認

5項目、マウス不要

確認方法: キーボード、スクリーンリーダー

5件中0件を確認済み

OS、ブラウザーと支援技術のバージョン、ビルド、実施日、各手順の実際の結果を記録してください。ポップアップ、それを出すツール、またはその設定を変更した際は、再度確認します。

スクリーンリーダーでの <dialog>の読まれ方

制限

このサンプルは一つのポップアップのための出発点で、あらゆるオーバーレイで同じ結果になることを保証するものではありません。一度閉じたポップアップをページごとに開き直さないための記録と、subscribe() がアドレスをどう扱うかは省略しています。ポップアップが開く前にどこにもフォーカスがなかった場合、閉じた後にフォーカスをどこへ移すかはページによります。ブラウザーに任せるのも妥当ですが、その後のTabがどこから進むかはブラウザーによって異なるため、対象のブラウザーで確認してください。実際に利用者が使う支援技術で、操作全体を確認してください。

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

EaseWebのサービス

修正した問題を、次のリリースで再発させない

このガイドのような修正方法を、コーディングエージェントが従うルールと、CIのチェックに組み込みます。あわせて定期的に、キーボードとスクリーンリーダーで手動の再テストを行います。

サービス内容を見る