Normative · WCAG 2.2

SC 2.5.2 Livello A WCAG 2.1

Annullamento del puntatore

Le funzioni attivate da un singolo puntatore devono scattare all'evento di rilascio, non all'evento di pressione — in modo che gli utenti possano trascinare via per annullare. Devono essere disponibili annullamento, ripristino o cancellazione prima dell'attivazione, salvo quando l'attivazione immediata è essenziale.

Cosa richiede

Quando un utente inizia un tocco o un clic e poi si accorge di essere sul bersaglio sbagliato, deve poter scorrere via prima di sollevare il dito o rilasciare il mouse, e l’azione non deve scattare. Ciò significa che l’attivazione deve avvenire su pointerup / click — il comportamento predefinito del browser — e non su pointerdown / mousedown.

Il criterio di successo richiede una delle quattro seguenti garanzie:

  • L’evento di pressione non attiva la funzione, oppure
  • Il completamento avviene sull’evento di rilascio sullo stesso bersaglio, con la possibilità di annullare spostandosi via, oppure
  • È disponibile un’opzione «annulla» dopo l’attivazione, oppure
  • L’inverso della funzione inverte il risultato (interruttore).

Le attivazioni essenziali — come la pressione di un tasto di pianoforte in un’app musicale — sono esenti.

Come soddisfarlo

  • Usare listener click, non mousedown / touchstart. Il browser implementa già il comportamento corretto di annullamento al trascinamento.
  • Per i widget personalizzati che gestiscono gli eventi del puntatore manualmente, attivare su pointerup e verificare che il bersaglio sia ancora lo stesso elemento sotto il cursore.
  • Per le azioni distruttive (elimina, invia), abbinare a un passaggio di conferma o a un avviso di annullamento.
  • Per i pulsanti di commutazione (silenzioso, preferito, stato premuto), un secondo tocco inverte la modifica, soddisfacendo anch’esso il criterio.

Errori comuni

  • Pulsanti collegati con onmousedown che scattano non appena il puntatore preme. Trascinare via non produce alcun effetto.
  • Maniglie di trascinamento personalizzate che interpretano pointerdown come evento di «selezione».
  • Schede dall’aspetto nativo che navigano verso una pagina di dettaglio su touchstart — l’utente non può scorrere oltre senza attivarle accidentalmente.
  • Menu a discesa che si chiudono su mousedown esterno anziché su click, consumando il clic.

Perché è importante

Trascinare via per annullare è il modo in cui gli utenti con tremore, disabilità motorie o puntamento impreciso (stilo su un treno in movimento) si riprendono da un tocco errato. Attivare sull’evento di pressione elimina questa via di fuga — non appena il dito tocca, l’azione è confermata. È anche un onere di usabilità per tutti: anche gli utenti senza disabilità fanno regolarmente affidamento sul trascinamento via quando il tocco atterra sul bersaglio sbagliato.