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

読み上げられないSPAの画面遷移

シングルページアプリのルーターが新しい画面を表示してタイトルも変えますが、フォーカスは元の場所のままです。何も読み上げられず、次のTabは元の位置から進みます。

WCAG 2.2
SC 2.4.3ASC 4.1.3AA· 2.1 で追加
必須とする規格
Section 508 · EN 301 549(EU) · JIS X 8341-3
問題あり
アクセシビリティの問題を示した図: 画面は変わったが、フォーカスはリンクに残ったまま。
01

問題

リンクで画面が切り替わっても、スクリーンリーダーの利用者には何も聞こえず、キーボードの利用者はもう意味のない位置から操作を続けることになります。

02

試してみる

ショップのリンクまでTabキーで移動し、Enterキーを押して読み上げを聞いてください。

ヘッダーのリンクと、一覧の最後のリンクを試してください。それぞれの後でTabを一度押すと、フォーカスはどこへ進みますか?

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

紅茶・緑茶 – Harbor Tea

紅茶・緑茶

  • アッサム 100g
  • 煎茶 100g
  • アールグレイ 100g

茶器を見る

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

(リンクでEnterを押してください)

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

03

修正方法

画面遷移のたびに、新しい画面の見出しへ、またはページ名を読み上げたうえでページの先頭へ、フォーカスを移します。

  1. 1画面遷移のたびに、フォーカスを意図して移す。新しい見出しへ移すか、読み上げを添えて先頭へ戻す。
  2. 2新しい画面の名前を一度伝える。フォーカスの移動か、最初からあるステータス領域で伝える。
  3. 3最初の読み込み時と、一つの画面の中での変化では、フォーカスを動かさない。
修正前 ルーターがタイトルを設定するだけ
<body>  <nav>    <a href="/teas">紅茶・緑茶</a>    <a href="/teaware">茶器</a>    <a href="/basket">かご</a>  </nav>  <main id="view">    <h1>茶器</h1>    …  </main></body>
修正後

新しい画面の見出しにフォーカスを移す

<body>  <nav>    <a href="/teas">紅茶・緑茶</a>    <a href="/teaware">茶器</a>    <a href="/basket">かご</a>  </nav>  <main id="view">    <h1 tabindex="-1">茶器</h1>    …  </main></body>

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

04

修正の確認

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

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

5件中0件を確認済み

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

制限

これは出発点となる実装例で、すべてのアプリケーションでの動作を保証するものではありません。見出しへのフォーカスと body へのフォーカスへの反応はスクリーンリーダーによって異なるため、利用者が使うもので確認してください。このガイドは、メインの内容を入れ替える画面を扱っています。ダイアログ、ドロワー、ページ内の更新には、それぞれのパターンがあります。ディープリンクや遅い通信も含め、実際のルートで一連の流れを確認してください。

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

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

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

再テストの進め方