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

メッセージを読み上げないチャットウィジェット

サポートチャットがメッセージをただのdivに入れているため、パネルを開いたときのあいさつも、届いた返信も、スクリーンリーダーに読まれません。

WCAG 2.2
SC 4.1.3AA· 2.1 で追加
必須とする規格
EN 301 549(EU)
問題あり messages.append(bubble)
アクセシビリティの問題を示した図: 全盲:返事は来たの?
01

問題

スクリーンリーダーの利用者には、サポートチャットを開いたときのあいさつも、届いた返信も聞こえません。

02

試してみる

チャットを開いてメッセージを送ってください。スクリーンリーダーは何を読みますか?

  1. Tabで「チャットで相談」へ移動し、Enterを押します。フォーカスがメッセージ欄に移ります。あいさつも一緒に読まれますか?
  2. Enterで質問を送り、返信が届いたときのスクリーンリーダーの読み上げを、ページの下の欄で確かめます。
  3. Escapeか×でチャットを閉じ、もう一度開きます。今度は何が読まれますか?

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

問題あいさつも返信も読まないチャット

配送について

ほとんどのご注文は5営業日以内に届きます。大型の商品は、ご指定の日にお届けします。

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

(チャットを開いて、メッセージを送ってください)

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

03

修正方法

パネルを開いたときに会話をメッセージ欄と一緒に読ませ、各返信はページに最初からあるログかライブリージョンに追加します。

  1. 1パネルを開くと、それまでの会話が読まれる。
  2. 2返信はすべて、スクリーンリーダーが監視する領域に入り、フォーカスは動かない。
  3. 3パネルは名前のあるボタンとEscapeで閉じられ、フォーカスは起動ボタンに戻る。
修正前 あいさつも返信も読まないチャット
<button type="button" class="chat-launcher">チャットで相談</button><section id="chat" class="chat-panel" aria-labelledby="chat-title" hidden>  <div class="chat-header">    <h2 id="chat-title">Birchwoodのチャット</h2>    <button type="button" class="chat-close" aria-label="チャットを閉じる">×</button>  </div>  <div class="chat-messages">    <p class="message from-us"><span class="visually-hidden">Birchwood:</span>こんにちは。ご注文についてお気軽にお尋ねください。</p>  </div>  <form class="chat-form">    <label for="chat-input" class="visually-hidden">メッセージ</label>    <input id="chat-input" autocomplete="off">    <button>送信</button>  </form></section>
修正後

メッセージのログと、開いたときの読み上げ

<button type="button" class="chat-launcher">チャットで相談</button><section id="chat" class="chat-panel" aria-labelledby="chat-title" hidden>  <div class="chat-header">    <h2 id="chat-title">Birchwoodのチャット</h2>    <button type="button" class="chat-close" aria-label="チャットを閉じる">×</button>  </div>  <div class="chat-messages" role="log" aria-label="メッセージ">    <p id="message-0" class="message from-us"><span class="visually-hidden">Birchwood:</span>こんにちは。ご注文についてお気軽にお尋ねください。</p>  </div>  <form class="chat-form">    <label for="chat-input" class="visually-hidden">メッセージ</label>    <input id="chat-input" autocomplete="off">    <button>送信</button>  </form></section>

AI コーディングアシスタントで修正しますか? このガイドを Markdown で取得、または全ガイドをコーディングエージェントで使う。

04

修正の確認

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

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

5件中0件を確認済み

OS、ブラウザーと支援技術のバージョン、ビルド、実施日、各手順の実際の結果を記録してください。チャットウィジェット、その提供元のスクリプト、または設定を変更した際は、再度確認します。

制限

このサンプルは、ページに重なるチャットのパネルのための出発点であり、どのウィジェットでも同じ結果になることを保証するものではありません。ライブリージョンの動きは、スクリーンリーダーとブラウザーによって異なります。特に、隠してから表示する領域や、フレームの中の領域では差が出るため、利用者が使うものでテストしてください。入力欄の説明がいつ読まれるかも、スクリーンリーダーとその設定によって異なります。多くは入力欄の名前の後に読みますが、少し間を置いてから読むものや、ヒントの設定が有効なときだけ読むものもあります。チャットの各返信がステータスメッセージに当たるかは、診断する人によって判断が分かれます。4.1.3の解説書は role="log" を処理の進み具合を伝える場面に挙げており、その達成方法はチャットを例にしています。どの基準で数えるとしても、読み上げられない返信は、スクリーンリーダーの利用者を待たせ続けます。Enterで送信するメッセージ欄には、別の問題もあります。IMEの変換を確定するEnterで、言葉が確定する前にメッセージが送られることがあります。IMEの変換確定のEnterで送信される入力欄を参照してください。IMEは変換の取り消しにEscapeも使うため、上のEscapeの処理は、変換中に押されたキーには反応しないようにしています。

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

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

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

再テストの進め方