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

キーボードで最後にしか届かないCookieバナー

同意管理のスクリプトがバナーをフッターの後に追加し、画面下部に固定するため、ページの手前に表示されるのに、Tabとスクリーンリーダーがたどる順序では最後になります。

WCAG 2.2
SC 2.4.3ASC 2.1.2ASC 2.4.11AA· 2.2 で追加
必須とする規格
Section 508 · EN 301 549(EU) · JIS X 8341-3
問題あり document.body.append(banner)
アクセシビリティの問題を示した図: ページの手前に表示されるのに、届くのは最後。
01

問題

キーボードとスクリーンリーダーの利用者は、ページ全体を通り過ぎた後でしかCookieバナーに出会えず、その途中でバナーにページの一部を隠されます。

02

試してみる

ページの先頭からTabを押し、Cookieバナーまで進んでください。

押した回数を数え、ページ下部のリンクを目で追ってください。バナーの下に隠れませんか?同意ダイアログでは、先に「ページを開く」を押してください。

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

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

03

修正方法

バナーをページの先頭に置くか、Escapeで閉じられるモーダルダイアログとして開き、誰もが最初に届くようにします。

  1. 1初回訪問では、Tabとスクリーンリーダーが最初に届くのがバナーである。
  2. 2表示中のバナーが、フォーカス中の要素を隠さない。
  3. 3バナーから離れるには、Tab、回答、Escapeのいずれかでよく、再読み込みは不要である。
修正前 フッターの後に追加したバナー
<body>  <header class="site-header">…</header>  <main>…</main>  <footer>…</footer>  <div class="cookie-banner">    <p>訪問数の集計とサイトの改善にCookieを使用します。</p>    <button type="button">すべて許可</button>    <button type="button">すべて拒否</button>    <a href="/cookies">Cookieを選ぶ</a>  </div></body>
修正後

ページの先頭に置いたバナー

<body>  <section class="cookie-banner" aria-labelledby="cookie-title">    <div class="cookie-question">      <h2 id="cookie-title">Harbour MuseumのCookieについて</h2>      <p>訪問数の集計とサイトの改善にCookieを使用します。</p>      <button type="button" value="accept">すべて許可</button>      <button type="button" value="reject">すべて拒否</button>      <a href="/cookies">Cookieを選ぶ</a>    </div>    <p class="cookie-saved" tabindex="-1" hidden>      Cookieの選択を保存しました。Cookieのページでいつでも変更できます。    </p>  </section>  <header class="site-header">…</header>  <main>…</main>  <footer>…</footer></body>

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

04

修正の確認

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

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

5件中0件を確認済み

OS、ブラウザーと支援技術のバージョン、ビルド、実施日、各手順の実際の結果を記録してください。同意管理サービスやその設定を変更した際は、再度確認します。

制限

このサンプルは、どのアプリケーションでも同じ結果になることを保証するものではありません。扱うのはバナーへの届き方と、バナーが隠すものであり、有効な同意の条件は扱いません。各選択肢で何を保存するか、Escapeで回答しないまま閉じてよいかは、同意を管理する担当者と決めてください。最後に置かれたバナーだけで2.4.3を満たさないかどうかは、診断する人によって判断が分かれます。ただし、その下に隠れるフォーカスは、起きるたびに2.4.11を満たしません。バナーやダイアログが取り除かれた後にTabがどこから続くかはブラウザーによって異なるため、対象のブラウザーで確認してください。

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

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

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

再テストの進め方