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

見えているラベルで読み上げられないリッチテキストエディター

入力部分はcontenteditableのdivで、label要素では名前を付けられないため、名前がないか、エディターのライブラリーがどのエディターにも付ける決まった名前で読み上げられる

WCAG 2.2
SC 4.1.2ASC 1.3.1ASC 2.5.3A· 2.1 で追加
必須とする規格
Section 508 · EN 301 549(EU) · JIS X 8341-3
問題あり aria-label="Rich Text Editor. Editing area: main"
アクセシビリティの問題を示した図: 全盲:これはメッセージ欄?
01

問題

スクリーンリーダーの利用者には、どの欄に書いているのかが伝わらず、音声操作の利用者は、画面に見えているラベルを話しても欄に入れない

02

試してみる

Tabキーでメッセージ欄に入って名前を確かめ、音声操作で「メッセージをクリック」と話してみましょう

  • 問題1: 欄の上のラベルはlabel要素ですが、forはdivに届かないため、欄には名前がありません。ロールもありません。

  • 問題2: エディターのライブラリーが、画面のどこにもない言葉で欄に名前を付けています。

  • 修正を適用します。 次に「ラベルの文言を変える」をオンにし、両方の修正をもう一度試してください。新しい言葉に合わせて名前が変わるのはどちらでしょう?

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

届いた荷物のふたが割れていました。

(Tabでメッセージ欄へ移動)

音声操作(再現):

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

03

修正方法

欄をテキストボックスにし、横のラベルで名前を付ける。aria-labelledbyか、ライブラリーのラベル設定を使う

  1. 1編集できる要素に、role="textbox"とaria-multiline="true"を付ける
  2. 2名前に横のラベルの言葉を含める。aria-labelledbyでそのラベルを指すのが最もよい
  3. 3ライブラリーがどのエディターにも付ける名前を、そのまま残さない
修正前

ロールのない編集可能なdiv

<label for="message">メッセージ</label><div class="toolbar" role="toolbar" aria-label="書式">  …</div><div id="message" class="editor" contenteditable="true">  <p>届いた荷物のふたが割れていました。</p></div>
修正後

ラベルを指すテキストボックス

<div id="message-label">メッセージ</div><div class="toolbar" role="toolbar" aria-label="書式">  …</div><div id="message" class="editor" contenteditable="true" role="textbox" aria-multiline="true" aria-labelledby="message-label">  <p>届いた荷物のふたが割れていました。</p></div>

混同しやすいもの
04

修正の確認

4項目、マウス不要

確認方法: キーボード、スクリーンリーダー、音声入力

4件中0件を確認済み

OS、ブラウザーと支援技術のバージョン、ビルド、実施日、各手順の実際の結果を記録してください。エディターのライブラリーを更新した際は、再度確認します。

制限

このサンプルは、どのエディターでも同じ結果になることを保証するものではありません。扱うのは入力部分のロールと名前で、エディターのほかの部分は扱いません。インデントのためにTabキーを取り込み、キーボードで抜け出せなくなるエディターは、フォーカスが抜け出せないエディターや埋め込み部品で扱っています。オンかどうかを伝えない太字ボタンは押された状態が伝わらないトグルボタンで、名前のないツールバーのアイコンは名前がないアイコンだけのボタンで扱っています。ツールバーを一つのTab位置にまとめ、矢印キーで移動できるようにすることは、「ツールバーを矢印キーで操作でき、Tabの移動は1回で済む」のトピックに属しますが、ガイドはまだありません。日本語の変換を確定するEnterキーでエディターが反応してしまう問題は、IMEの変換確定のEnterで送信される入力欄で扱っています。エディターに画像を入れるときに代替テキストを尋ねることは代替テキストを尋ねない画像のアップロードで、HTML標準の入力欄のラベルはラベルがない・表示と食い違うフォームの入力欄で扱っています。実際に使用する支援技術で、操作全体を確認してください。

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

EaseWebのサービス

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

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

サービス内容を見る