本文へ移動
ご相談

フォーカスが抜け出せないエディターや埋め込み部品

インデントのためにTabキーを奪ったエディターから、TabでもShift + Tabでも出られません。

01

問題

Tabキーでエディターに入ったキーボード利用者が出られず、ページのほかの部分を操作できません。

02

試してみる

メモを入力してから、Tabで外へ出てください。

Tabで「メモを保存」に届きますか?Shift + Tabで戻れますか?

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

03

修正方法

Tabでエディターから出られるようにするか、ページで説明した解除キーを用意します。

  1. 1TabとShift + Tabで、直接または解除キーの後に部品から出られる。
  2. 2解除キーは画面上のテキストで説明し、aria-describedbyで関連付ける。
  3. 3利用者が出たばかりの部品へ、フォーカスを戻さない。
修正前 すべてのTabを奪うエディター

html

<label for="notes">メモ</label><textarea id="notes" name="notes"></textarea><button type="submit">メモを保存</button>

js

const editor = document.getElementById('notes');editor.addEventListener('keydown', (event) => {  if (event.key !== 'Tab') return;  event.preventDefault();  editor.setRangeText('  ', editor.selectionStart, editor.selectionEnd, 'end');});
修正後

ブラウザー標準どおりTabでフォーカスを移す

html

<label for="notes">メモ</label><textarea id="notes" name="notes"></textarea><button type="submit">メモを保存</button>

js

// keydownハンドラーを置かない:TabとShift + Tabで通常どおりフォーカスが移ります。

04

修正の確認

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

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

5件中0件を確認済み

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

制限

このサンプルは、どのアプリケーションでも同じ結果になることを保証するものではありません。インデントは2つの空白で、元に戻す操作やインデント解除は省略しています。リッチテキストやコードエディターのライブラリには独自のTab設定があるため、使っているものの動作を確認し、キーボードと実際に使用する支援技術で操作全体を確認してください。

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

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

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

再テストの進め方