Annulering van aanwijzer
Silktide detecteert knoppen en links die al reageren zodra ze worden ingedrukt, in plaats van wanneer de druk wordt losgelaten. Reageren bij het loslaten geeft mensen de kans om te herstellen van het indrukken van het verkeerde element door weg te schuiven voordat ze hun vinger loslaten.
Waarom dit belangrijk is
Iedereen drukt weleens op de verkeerde knop, maar mensen met trillingen, beperkte handvaardigheid of een verminderd gezichtsvermogen doen dit veel vaker. Het universele gebaar om dit te herstellen is blijven vasthouden, van de bediening weg slepen en loslaten — dit werkt omdat knoppen en links normaal gesproken reageren bij het loslaten. Een bediening die reageert op de eerste druk neemt deze ontsnappingsmogelijkheid weg: de actie wordt onmiddellijk uitgevoerd, zonder mogelijkheid om deze af te breken. Bij het verzenden van een formulier of het verwijderen van gegevens kan één vergissing een onomkeerbare fout worden.
Dit is succescriterium 2.5.2 van (Annulering van aanwijzer), een vereiste op — onderdeel van het meest basisniveau van conformiteit.
Hoe je dit oplost
- Start acties vanuit de gebeurtenis
click, die wordt geactiveerd bij het loslaten, in plaats van vanuitmousedown,pointerdownoftouchstart. - Als een bediening echt moet reageren op de eerste druk — bijvoorbeeld een pianotoets in een muziekapp — zorg er dan voor dat het loslaten buiten de bediening de actie ongedaan maakt of afbreekt, of bied een functie voor ongedaan maken.
- Als de gemarkeerde listener geen actie activeert (deze kan bijvoorbeeld alleen een visueel ingedrukt effect toevoegen), kun je de bevinding .
// Probleem: wordt onmiddellijk bij het indrukken geactiveerd en kan niet worden geannuleerd
button.addEventListener('mousedown', submitForm);
// Oplossing: wordt bij het loslaten geactiveerd, dus weg slepen annuleert de actie
button.addEventListener('click', submitForm);
Hoe Silktide dit test
- Laad elke pagina in een echte browser en registreer de -eventlisteners die de pagina registreert.
- Zoek naar listeners voor gebeurtenissen bij het indrukken:
mousedown,pointerdownentouchstart. - Rapporteer een listener wanneer deze is gekoppeld aan een bediening die
normaal gesproken bij het loslaten wordt geactiveerd: een knop, link, invoer
voor verzenden of opnieuw instellen, of een element met een
-rol zoals
button,link,menuitem,tabofswitch. - Sla paginabrede listeners over die niet aan een specifieke bediening zijn gekoppeld. Deze horen meestal bij scrollen of slepen en neerzetten, en niet bij activering.
- Omdat Silktide niet kan bepalen wat de code van de listener doet, worden bevindingen gemarkeerd voor jouw bevestiging in plaats van meegeteld als bevestigde fouten.
Problemen oplossen
De listener activeert niets
Listeners voor gebeurtenissen bij het indrukken worden vaak gebruikt voor
onschadelijke effecten: een ingedrukte stijl, een rimpelanimatie of
focusbeheer, terwijl de echte actie nog steeds op click plaatsvindt. Dit
voldoet aan het succescriterium; keur de bevinding goed.
De bediening is een schuifregelaar of sleepgreep
Schuifregelaars, sleepgrepen en vergelijkbare widgets volgen de eerste druk terecht. WCAG beschouwt de gebeurtenis bij het indrukken als essentieel voor dit soort interacties; keur de bevinding goed.