2.1.2 - Keine Tastaturfallen
A 2.0
Umsetzung
Ziel
Verhindern, dass Benutzer beim Navigieren mit der Tastatur in einer Komponente „gefangen“ werden und nicht weiter navigieren können.
Beschreibung
- Der Fokus muss jederzeit durch die Tastaturschnittstelle von einer Komponente entfernt werden können.
- Ist das Verlassen einer Komponente nicht über Standardmethoden (z. B. Tabulator- oder Pfeiltasten) möglich, muss eine Anleitung zur Navigation bereitgestellt werden.
- Inhalte, die dieses Erfolgskriterium nicht erfüllen, können die Nutzung der gesamten Webseite unmöglich machen und gelten daher als absolute Störfaktoren.
Anforderungen
- Implementierung eines klaren und erkennbaren Fokusstatus für alle Steuerelemente.
- Sicherstellen, dass interaktive Elemente wie Widgets, modale Dialoge und eingebettete Inhalte die Tastaturnavigation ermöglichen.
- Verwenden von Standard-Tastaturinteraktionen (z. B. Tabulatortaste, Escape-Taste) zum Verlassen von Komponenten.
- Bei benutzerdefinierten Interaktionen eine textbasierte Anleitung zur Navigation bereitstellen.
- Nutzung von ARIA-Attributen wie aria-modal und aria-hidden, um den Tastaturfokus innerhalb von Dialogen oder Widgets zu steuern.
- Bereitstellung von Anleitungen oder Beschreibungen für spezielle Tastaturinteraktionen (z. B. „Zum Verlassen Escape drücken“).
- Dokumentation aller benutzerdefinierten Tastaturbefehle.
- Manuelle Prüfung aller interaktiven Komponenten, um sicherzustellen, dass der Fokus von diesen Komponenten entfernt werden kann.
- Sicherstellen, dass keine Tastaturfalle besteht, insbesondere bei Widgets, Dialogen oder eingebetteten Anwendungen.
Code-Beispiele
Beispiel für ein modales Dialogfeld mit Escape-Funktion:
<div role="dialog" aria-modal="true" id="modal" tabindex="-1"> <p>Dies ist ein modales Dialogfeld.</p> <button onclick="closeModal()">Schließen</button></div>
<script> document.addEventListener('keydown', function (event) { if (event.key === 'Escape') { closeModal(); } });
function closeModal() { const modal = document.getElementById('modal'); modal.style.display = 'none'; }</script>