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

読んでいる途中や入力中に勝手に開いてしまうポップアップ

メールマガジンへの登録を勧めるポップアップが、ページを開いて10秒たつと利用者が何をしていても開くうえ、後回しにしたり表示しないようにしたりする手段がページにない

WCAG 2.2
SC 2.2.4AAA
必須とする規格
Section 508、EN 301 549、JIS X 8341-3 では必須ではない
問題あり setTimeout(() => signup.showModal(), 10000);
アクセシビリティの問題を示した図: 認知:どこまで書いたっけ?
01

問題

ページを読んだり入力したりしている最中に、頼んでもいないポップアップが重なって開き、後回しにすることも止めることもできない

02

試してみる

カードに書くメッセージを、ゆっくり入力してみましょう

ショップの10秒は、ページを初めてクリックするかTabキーで入ったときに始まり、デモ用の時計で数えます。10秒を過ぎても入力を続け、文字がどこに入るかを見てください。続いてそれぞれの修正を適用し、特典がほしいときに「初回のご注文が10%オフ」を押すか、時間がたつ前に設定のチェックを外して「最初から」でページを開き直してみてください。

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

問題10秒後に開く登録のポップアップ
デモ用の時計:ページを初めてクリックするか、Tabキーで入ると始まります

Fernleaf Paper

野の花のバースデーカード

$4.50 · 押し花をあしらった再生紙のカードです。メッセージを書き添えて、代わりに投函します。

Fernleaf Paper

初回のご注文が10%オフ

新しいデザインやセールのお知らせをお届けします。

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

03

修正方法

特典は、利用者が求めたときに開く

修正前
問題10秒後に開く登録のポップアップ
<main>  <h1>Wildflower birthday card</h1>  <form class="card-form">    <label for="card-message">Message inside the card</label>    <textarea id="card-message" name="message" rows="4"></textarea>    <button>Add to basket</button>  </form></main><dialog id="signup" aria-labelledby="signup-title">  <button type="button" class="signup-close" aria-label="Close">×</button>  <h2 id="signup-title">Get 10% off your first order</h2>  <p>Sign up for news of new designs and sales.</p>  <form method="dialog">    <label for="signup-email">Email address</label>    <input id="signup-email" name="email" type="email" autocomplete="email" autofocus required>    <button>Sign up</button>  </form></dialog>
問題点3点

ポップアップそのものは正しく作られています。HTML標準のダイアログで、×は名前のあるボタンです。Escapeキーで閉じ、閉じるとフォーカスは元の位置に戻ります。問題は開くタイミングにあります。

  • 利用者がそのとき何をしていても、ページを開いて10秒後に開きます。
  • フォーカスがメールアドレス欄へ移るため、カードに書くつもりの文字がポップアップに入り、スクリーンリーダーはページの読み上げを止めてポップアップを読みます。
  • 現れる前に後回しにしたり、出ないようにしたりする手段がページにありません。
修正後

特典を開くボタン

<p class="offer-bar">  New here?  <button type="button" id="offer-open">Get 10% off your first order</button></p><main>  <h1>Wildflower birthday card</h1>  <form class="card-form">    <label for="card-message">Message inside the card</label>    <textarea id="card-message" name="message" rows="4"></textarea>    <button>Add to basket</button>  </form></main><dialog id="signup" aria-labelledby="signup-title">  <button type="button" class="signup-close" aria-label="Close">×</button>  <h2 id="signup-title">Get 10% off your first order</h2>  <p>Sign up for news of new designs and sales.</p>  <form method="dialog">    <label for="signup-email">Email address</label>    <input id="signup-email" name="email" type="email" autocomplete="email" autofocus required>    <button>Sign up</button>  </form></dialog>
修正の手順3ステップ
  1. タイマーを削除し、ポップアップが勝手に開かないようにします。
  2. ページの先頭に、何を開くかを示すボタン「初回のご注文が10%オフ」を置きます。特典はページを開いた時点からすべての訪問者の目に入り、どのページでも同じ場所にあります。
  3. そのボタンから同じポップアップを開きます。フォーカスがメールアドレス欄へ移るのは利用者がボタンを押したときだけで、閉じるとボタンに戻ります。

修正前の問題が解消し、2.2.4を満たします。求められるまで何も開かないので、後回しにするものがありません。ポップアップの見た目はそのままで、変わるのは、最初からページの先頭にある細いバーだけです。

04

デザインの案

特典は、誰の手も止めずに見せておける

求められるまで前に出てこない登録欄の置き方をあと3通りと、勝手に開く流行りの形を2通り紹介します。それぞれのサンプルにTabキーかポインターで入り、表示されているものを押してみてください。

デザインファイルで

  • 特典が普段ページのどこにあるかを、スマートフォンと広い画面の両方で描き、ポップアップはそのボタンで開くものとしてだけ描く。
  • ボタンには「こちら」ではなく、「初回のご注文が10%オフ」のように何が開くかを書く。
  • ポップアップが開いたときのフォーカスの移動先と、閉じたらボタンに戻ることを書き込む。
  • 時間で開くポップアップをどうしても残すなら、それをオフにする設定をページの先頭に描き、オフにした状態のページも描く。

合格

  • Fernleaf Paper

    野の花のバースデーカード

    $4.50 · 押し花をあしらった再生紙のカード。

    初回のご注文が10%オフ

    ページの中の登録の帯 カードの説明と次のセクションの間に置いた、温かい紙色の帯です。見出し、入力欄1つ、緑の「登録する」ボタン(#2f5d50に白で7.49:1)があります。ページを覆うものはなく、スクロールしてたどり着いたときに出会い、押さなくても特典の全体が見えます。
  • Fernleaf Paper

    野の花のバースデーカード

    $4.50 · 押し花をあしらった再生紙のカード。

    最初からある「10%オフ」のタブ 画面の端の下のほうに固定した、ギフトのアイコン付きの小さな緑のタブで、ページを開いた時点からあり、勝手に動いたり大きくなったりしません。押すと横に登録欄が開き、フォーカスは入力欄に移ります。×かEscapeキーで閉じると、フォーカスはタブに戻ります。内容やフォーカスのあるコントロールに重ならないようにします。
  • かご

    野の花のバースデーカード $4.50

    合計 $4.50

    登録すると、このご注文が$0.45お得に。

    かごの合計の横に置く特典 合計の下に置いた控えめな1行「登録すると、このご注文が$0.45お得に」(茶色#6b5d4fで6.36:1)と、その後ろの「10%オフにする」ボタンです。割引に意味がある場面で特典を示し、押されたときだけ登録欄を開きます。

不合格

  • Fernleaf Paper

    野の花のバースデーカード

    $4.50 · 押し花をあしらった再生紙のカード。

    ページを半分読むと現れるスライドインWCAG 2.2.4 サンプルにTabキーかポインターで入って待つと、登録欄がページの下半分に滑り上がり、フォーカスを奪います。全面のポップアップより控えめに感じますが、読んでいる途中や入力の途中に開くことに変わりはなく、前もって断る手段もありません。サンプルでは1回だけです。
  • Fernleaf Paper

    野の花のバースデーカード

    $4.50 · 押し花をあしらった再生紙のカード。

    訪れるとすぐ開く「回して当てる」ルーレットWCAG 2.2.4 ページを開いた直後に、賞品を並べた鮮やかなルーレットがページを覆います。「回して当てる」と小さな「結構です」があります。楽しげですが、目的のページとの間に立ちはだかり、利用者に残される選択は、現れた後に閉じることだけです。
05

修正の確認

5項目、マウス不要

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

5件中0件を確認済み

OS、ブラウザー、支援技術のバージョン、ビルド、日付、各手順の実際の結果を記録してください。ポップアップや、それを表示するツール、そのキャンペーンを変えたら、確認をやり直してください。

制限

これは出発点となる実装例で、すべてのアプリケーションでの動作を保証するものではありません。扱うのは、タイマーで開く登録のポップアップ1つです。「登録する」がメールアドレスをどう扱うかは、サンプルでは省いています。マーケティングツールやチャットツールの設定やキャンペーンは、サイト側のデプロイなしに変わるため、変更のたびにポップアップを確かめ直す必要があります。ある割り込みが緊急かどうかはサービスについての判断で、コードでは決められません。訪問者が使う支援技術で、一連の操作を通して確認してください。

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

EaseWebのサービス

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

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

サービス内容を見る