Stufe
A
Seit
WCAG 2.1
/ WCAG-Kriterium

2.5.2 Zeigeraufhebung

Das bloße Drücken auf ein Bedienelement darf keine Aktion auslösen, die sich nicht zurücknehmen lässt. Normalerweise wirkt sie erst beim Loslassen, sodass jemand, der das Falsche gedrückt hat, vom Ziel weggleiten und loslassen kann.

/ Was es verlangt

Eine Zeigeraktion hat zwei Momente: das Down-Ereignis, wenn die Taste gedrückt wird oder der Finger den Bildschirm berührt, und das Up-Ereignis, wenn losgelassen wird. Für jede Funktion, die mit einem einzelnen Zeiger bedient wird, verlangt das Kriterium, dass mindestens eine von vier Bedingungen zutrifft. Das Down-Ereignis führt keinen Teil der Funktion aus. Oder die Funktion wird beim Up-Ereignis abgeschlossen und lässt sich vorher abbrechen oder danach rückgängig machen. Oder das Up-Ereignis kehrt um, was das Down-Ereignis bewirkt hat, wie eine Vorschau, die nur während des Drückens erscheint. Oder der Abschluss beim Down-Ereignis ist wesentlich.

Menschen mit Tremor, Sehbehinderung oder kognitiven Einschränkungen berühren oder klicken oft das falsche Ziel. Auslösen beim Loslassen gibt ihnen einen eingebauten Ausweg: Sie schieben den Zeiger vor dem Loslassen vom Ziel, und nichts passiert. Das W3C wertet Funktionen, die einen Tastendruck auf einer Tastatur oder einem Ziffernblock nachbilden, als wesentlich und nennt ein Klavier auf dem Bildschirm und ein Spiel, das von genauem Timing abhängt, als weitere Beispiele. Das Kriterium betrifft Inhalte, die Zeigeraktionen selbst auswerten, nicht den Browser oder assistive Technologien. Das click-Ereignis in JavaScript feuert beim Loslassen, deshalb bestehen native Schaltflächen und Links mit click-Handlern ohne Zusatzaufwand.

/ Woran Seiten scheitern

  • Die Schließen-Schaltfläche eines Dialogs mit einem langen Formular reagiert auf mousedown, pointerdown oder touchstart, ein Abrutschen des Fingers schließt also den Dialog, und die Eingaben sind verloren.
  • Ein Papierkorb-Symbol in einer Liste entfernt die Zeile bei pointerdown, ohne Bestätigung und ohne Rückgängig.
  • Ein Menüeintrag navigiert bei mousedown, wer ihn drückt und wegzieht, landet also trotzdem auf der Seite.
  • Eine Senden- oder Kaufen-Schaltfläche löst bei touchstart aus, in dem Moment, in dem ein scrollender Finger auf ihr landet.
  • In einer sortierbaren Liste wird ein gezogenes Element auch dann verschoben, wenn man es außerhalb aller Ablagezonen loslässt, und Rückgängig gibt es nicht.

/ So prüfen Sie es selbst

  1. Drücken und halten Sie die Maustaste auf jedem Bedienelement oder legen Sie einen Finger darauf, ohne loszulassen. Noch sollte nichts Unumkehrbares geschehen sein.
  2. Bewegen Sie den Zeiger, weiter gedrückt, vom Bedienelement weg und lassen Sie dort los. Die Aktion sollte nicht ausgeführt werden.
  3. Wo eine Aktion doch beim Drücken ausgeführt wird, suchen Sie einen Weg zurück: Das Loslassen kehrt sie um, ein Rückgängig-Element erscheint, oder die Funktion ist wesentlich, etwa eine Taste einer Bildschirmtastatur.
  4. Nehmen Sie bei Drag and Drop ein Element auf und lassen Sie es außerhalb jeder Ablagezone oder an seiner Ausgangsstelle los. Es sollte an seinen Platz zurückkehren, oder das Verschieben sollte bestätigt oder rückgängig gemacht werden können.
  5. Öffnen Sie in den Entwicklerwerkzeugen die Event-Listener verdächtiger Bedienelemente, oder durchsuchen Sie die Skripte nach Handlern für mousedown, pointerdown und touchstart, die die eigentliche Arbeit erledigen.

/ So beheben Sie es

  • Hängen Sie Aktionen an das click-Ereignis, das beim Loslassen feuert, statt an mousedown, pointerdown oder touchstart.
  • Bauen Sie Bedienelemente aus button- und a-Elementen, damit der Browser seine eigene Auslösung beim Loslassen anwendet.
  • Wo ein Drücken etwas beginnen muss, etwa ein Ziehen, schließen Sie es bei pointerup nur ab, wenn der Zeiger über einem gültigen Ziel steht, und stellen Sie bei pointercancel oder einem Loslassen anderswo den alten Zustand wieder her.
  • Ergänzen Sie zerstörende Aktionen, die beim Drücken ausgeführt werden, um ein Rückgängig-Element oder einen Bestätigungsschritt.
  • Nutzen Sie das Down-Ereignis nur für Vorschauen beim Gedrückthalten, die das Loslassen wieder entfernt, und für Funktionen, bei denen das Drücken wesentlich ist, etwa die Tasten einer Bildschirmtastatur.

/ Was unser Scanner prüft

Keine automatische Prüfung in unserem Scan deckt die Zeigeraufhebung ab. Ob eine Aktion beim Drücken oder beim Loslassen ausgelöst wird, entscheiden Event-Handler, die der Scan nicht liest, und er drückt nie ein Bedienelement und zieht den Zeiger weg, um die Folge zu sehen. HTML_CodeSniffer markiert zwar onmousedown- und ontouchstart-Attribute im HTML, aber nur als Hinweise, und der Scan behält allein Fehler. In der manuellen Prüfung wird jedes Bedienelement gedrückt, der Zeiger weggezogen und losgelassen.

/ Wer es verletzt, nach unseren eigenen Messungen

Der wöchentliche Index hat für dieses Kriterium keine Zahlen, weil keine Prüfung des Website-Scans es testen kann. Ein Mensch beurteilt es, und genau dafür gibt es ein manuelles Audit.

Eine Seite je Stelle, automatisch im Wochenrhythmus gemessen. Behebungen seit dem letzten Durchlauf erscheinen beim nächsten, und jede Eintragsseite bietet ein Recht auf Gegendarstellung.

/ Fragen zu diesem Kriterium

Ist es ein Verstoß gegen die WCAG, mousedown oder touchstart zu verwenden?

Nicht automatisch. Das Kriterium ist erst verletzt, wenn das Down-Ereignis einen Teil der Funktion ausführt und keine der übrigen Bedingungen zutrifft: kein Abbrechen oder Rückgängigmachen, keine Umkehr beim Loslassen und kein wesentlicher Grund. Eine Vorschau beim Gedrückthalten, die beim Loslassen verschwindet, ist in Ordnung. Ein Löschen oder Schließen bei mousedown ohne Rückgängig verletzt das Kriterium.

Erfüllt das click-Ereignis in JavaScript die Zeigeraufhebung?

Ja, im üblichen Fall. Das W3C weist darauf hin, dass das click-Ereignis beim Loslassen des Zeigers feuert, wer also drückt, vom Bedienelement wegzieht und loslässt, löst nichts aus. Deshalb erfüllen native Schaltflächen und Links mit click-Handlern das Kriterium ohne Zusatzaufwand.

Wann ist das Auslösen beim Down-Ereignis erlaubt?

Wenn sich das Ergebnis abbrechen oder rückgängig machen lässt, wenn das Loslassen es umkehrt oder wenn der Abschluss beim Down-Ereignis wesentlich ist. Das W3C behandelt Funktionen, die einen Tastendruck auf einer Tastatur oder einem Ziffernblock nachbilden, als wesentlich und nennt ein Klavier auf dem Bildschirm und ein Spiel mit genauem Timing als weitere Beispiele.