Przejdź do głównej treści

Dostępnik o sklepowym koszyku

Znowu wracam do kryterium, które w audycie wywołuje najwięcej pytań: 4.1.3 Komunikaty o stanie. Pracując nad sklepem internetowym usłyszałem od deweloperskiej firmy: „przecież koszyk jest cały czas widoczny, o co chodzi?”. No właśnie — nie wszyscy patrzą na koszyk, niektórzy słuchają. A komunikaty o stanie mają mieć postać, którą czytnik ekranu ogłosi bez proszenia o skupienie.

Rozkładam to na czynniki: co WCAG uważa za komunikat o stanie (wynik działania, zmiana stanu, postęp, błąd), co znaczy „programowo określone” bez zmiany kontekstu, i jak ich nie mylić ze zwykłą treścią, która zastępuje poprzednią.

W części technicznej pokazuję trzy role, które rzeczywiście są regionami na żywo:

  • role="status" — uprzejme komunikaty, czytane w ciszy („2 produkty w koszyku”);
  • role="alert" — pilne, przerywające („Kupon nieprawidłowy”);
  • role="log" — kolejkowane przyrosty (czat, logi).

I przy okazji rozprawiam się z częstym błędem: progressbar to nie region na żywo — nie ogłasza zmian sam z siebie, a zamieniony w rozgadany live region potrafi zablokować syntezator mowy. Do postępu używaj status z komunikatem etapowym („50 proc.”, „gotowe”), a nie migającego licznika.

Po drodze pilnujesz kilku atrybutów: aria-atomic="true" w komunikatach, które niosą sens w całości, oraz aria-relevant — bo usunięcia (removals) ogłasza się oszczędnie i tylko jako sugestię dla czytnika.

Warto przeczytać w całości: Dostępnik o sklepowym koszyku