コンテンツに移動
Silktideヘルプ

モーダルのフォーカストラップ

Silktide は、モーダルダイアログ(ページの残りの部分とのインタラクションを ブロックするポップアップ)を含むページを特定し、ダイアログが開いている間、 キーボードフォーカスが正しく管理されているか確認するよう求めます。これは手動 レビューです。自動テストでダイアログを見つけることはできますが、開閉時にどの ように動作するかを確認することはできません。

重要な理由

モーダルダイアログが開いている間、その背後のページは表示されていますが操作でき ない状態です。がダイアログの外に 逃げてしまうと、キーボードやを使用する ユーザーは、見たり操作したりできないコンテンツを Tab キーで移動することになり、 文脈を失ったまま背後のページを読み上げられ、現在位置も完全に失ってしまいます。 また、ダイアログが閉じたときにフォーカスが戻らないと、ページの先頭に移動させられ、 元いた場所まで再び移動しなければなりません。

修正方法

ページ上の各ダイアログを開き、キーボードだけを使って確認します。

  1. ダイアログが開くと、フォーカスがダイアログ内に移動する(通常は最初の コントロールまたはダイアログ自体に移動する)。
  2. Tab キーと Shift+Tab キーを押すと、ダイアログのコントロール間を循環し、 背後のページに到達することがない。
  3. Escape キーを押すと、ダイアログが閉じる(閉じることができるダイアログの場合)。
  4. ダイアログが閉じると、フォーカスがダイアログを開いた要素に戻る。

いずれかが満たされない場合は、ダイアログの実装を修正してください。showModal() で開かれるネイティブの <dialog> 要素は、この動作の大部分を自動的に提供します。 カスタムダイアログでは、これをスクリプトで実装する必要があります。すべて正しく 動作する場合は、該当事項をしてください。

Silktide によるテスト方法

  1. ページにモーダルダイアログが含まれている兆候を探します。ネイティブの <dialog> 要素、role="dialog" または role="alertdialog" を持つ要素、 aria-modal="true" を持つ要素、またはフォーカス可能なコントロールも含む、 モーダルでよく使われるスタイルのクラス名を持つ要素が対象です。
  2. これらのいずれかが見つかった場合、そのページに対して 1 件のレビュー用 プロンプトを表示します。

Silktide はダイアログを開いて実行時のフォーカス動作を確認できないため、この チェックが自動的に失敗することはありません。確認するよう求められます。

トラブルシューティング

ページに表示されるモーダルがない

多くのサイトでは、特定の条件でのみ表示されるダイアログのマークアップ(ニュース レターのポップアップ、Cookie ダイアログ、非表示の検索オーバーレイなど)が、すべて のページに含まれています。プロンプトは引き続き適用されます。ダイアログが開く状態 での動作を確認してください。マークアップが残存しているだけで、決して開かない場合 は、削除を検討してください。

ダイアログがサードパーティ製ライブラリによって提供されている

よく知られたダイアログライブラリは通常、フォーカスを正しく管理しますが、設定や カスタムコンテンツによって動作が損なわれることがあります。ライブラリのドキュメ ントに頼るのではなく、自分のページで動作を確認してください。

詳細情報

最終更新

このページは役に立ちましたか?