Blog

Cookie lišta, která neškodí: pořadí zaměření, zavření a právo změnit názor

Cookie lišta je první věc, se kterou se návštěvník na webu setká, a při hodnocení přístupnosti bývá pravidelně nejhorší částí celého webu. Ne proto, že by byl souhlas s cookies složitý problém, ale proto, že ho skoro nikdo neřeší sám: vloží se plugin, ten vykreslí, co vykreslí, a nikdo se už nepodívá, co to dělá s klávesnicí a odečítačem obrazovky. Tento článek popisuje tři věci, na kterých záleží nejvíc, a vysvětluje, proč je plugin zpravidla nesplní.

1. Pořadí zaměření: lišta není modální okno

Většina lišt se chová jako modální okno: po načtení stránky uchvátí zaměření klávesnice, uzamkne rolování a překryje obsah. Pro člověka s klávesnicí nebo odečítačem obrazovky to znamená, že se ke stránce, kvůli které přišel, dostane až poté, co lištu nějak vyřídí. To je špatné pořadí priorit: souhlas s cookies není důvod, proč přišel.

Správná lišta je oblast (region) s vlastním nadpisem, která se v dokumentu nachází brzy, hned za odkazy na přeskočení, ale zaměření na ni nepřesouvá. Uživatel klávesnice ji najde po třech stisknutích Tab, uživatel odečítače obrazovky ji vidí v seznamu oblastí a navíc dostane jednu zdvořilou větu, že lišta existuje a kde je. Stránka zůstává celá použitelná i bez rozhodnutí, protože dokud se nikdo nerozhodl, neukládá se nic kromě nezbytného.

Modální okno má smysl jen tehdy, když bez rozhodnutí opravdu nelze pokračovat. U cookies to neplatí: bez souhlasu se jednoduše nenačtou analytické a marketingové skripty. Kdo trvá na modálním okně, přiznává, že chce souhlas vynutit.

2. Zavřít se dá vždy a odmítnout je stejně snadné jako souhlasit

Dva požadavky, jeden technický a jeden etický. Technický: lištu musí být možné zavřít klávesou Escape a její obsah nesmí být pastí na klávesy (kritérium 2.1.2). Zavření bez rozhodnutí znamená odmítnutí nepodstatných cookies; tak to vyplývá z požadavku na svobodný a aktivní souhlas.

Etická: tlačítka „Přijmout vše“ a „Odmítnout nepodstatné“ musí být stejně viditelná a stejně blízko. Šedé „Odmítnout“ ukryté za tlačítkem „Nastavení“ a za třemi kliky je klamavý vzor (dark pattern), který evropské dozorové orgány včetně Úřadu pro ochranu osobních údajů i Evropského sboru pro ochranu osobních údajů opakovaně označují za neplatný souhlas. Pro uživatele se sníženou pozorností nebo kognitivním znevýhodněním je to navíc bariéra, nejen nepříjemnost.

K zavření patří i to, že lišta nesmí zakrývat zaměřený prvek (kritérium 2.4.11 ve WCAG 2.2). Lišta připnutá ke spodnímu okraji okna překryje každé tlačítko, na které se člověk s klávesnicí dostane na konci stránky. Řešení je jednoduché: dokud je lišta zobrazená, zapíše svou výšku do scroll-padding dokumentu a prohlížeč zaměřený prvek sám odroluje nad ni.

3. Právo změnit názor

Souhlas, který nelze odvolat stejně snadno, jako byl udělen, není souhlas. V praxi to znamená trvalý odkaz nebo tlačítko „Změnit nastavení cookies“, typicky v patičce každé stránky, které otevře tutéž lištu s aktuální volbou. Po zavření se zaměření vrátí na tlačítko, ze kterého uživatel přišel, přesně jako u každého jiného rozbalovacího prvku.

Dvě drobnosti, na které se zapomíná. Za prvé, na zapamatování odmítnutí není potřeba žádná cookie; stačí lokální úložiště prohlížeče. Za druhé, uložená volba by měla mít verzi: když přibude nová kategorie nebo nový nástroj, zvýšíte verzi a lišta se zeptá znovu, místo toho, aby se nový nástroj tiše schoval pod starý souhlas.

Proč nepoužívat plugin

Není to dogma; je to zkušenost z auditů. Pluginy pro správu souhlasů mívají pravidelně tyto problémy:

  • Načítávají skripty třetích stran ještě před souhlasem. Samotný plugin bývá skript z cizí domény, který si s sebou nese vlastní cookies a vlastní sledování. Souhlas s cookies se tak získává nástrojem, který je sám porušuje.
  • Generická ARIA místo sémantiky. Okno bez nadpisu, tlačítka z prvků div, přepínače bez popisků, aria-hidden na celé stránce, které se po zavření zapomene odstranit. Z odečítače obrazovky se stane tichý web.
  • Past na zaměření. Zaměření se uzamkne v liště, ale Escape nefunguje a jediná cesta ven je souhlas.
  • Překrývání obsahu a nulová podpora zvětšení. Při 400% zvětšení lišta zabere celou obrazovku a nedá se odrolovat.
  • Nedá se zkontrolovat ani opravit. Kód se mění bez vašeho vědomí, hodnocení přístupnosti platí jen do nejbližší aktualizace a chybu, kterou najdete, nemůžete opravit.
  • Právní riziko zůstává vaše. Povinnost získat souhlas podle § 89 odst. 3 zákona č. 127/2005 Sb., o elektronických komunikacích (a slovenský § 109 ods. 8 zákona č. 452/2021 Z. z.) a podle nařízení GDPR nese provozovatel webu, ne dodavatel pluginu.

Vlastní lišta je přitom pár desítek řádků: oblast s nadpisem, tři tlačítka, jedna skupina přepínačů a uložení volby. Pokud potřebujete správu souhlasů pro desítky nástrojů, potřebujete především méně nástrojů.

Jak to vypadá v praxi

Na stránce Vzory přístupných komponent je lišta, která splňuje vše výše uvedené, i s klávesovou mapou, oznámeními pro odečítač obrazovky a kódem ke zkopírování. Tento web cookies nepoužívá vůbec, takže lišta je jen ukázka; o to snáz se na ní zkouší.

Kontrolní seznam

  • Lišta je oblast s nadpisem, umístěná brzy v dokumentu, bez přesunu zaměření po načtení.
  • Stránka je použitelná bez rozhodnutí; před souhlasem se nenačte nic nepodstatného.
  • Escape lištu zavře a znamená odmítnutí; klávesnice z ní vždy vyjde.
  • „Přijmout“ a „Odmítnout“ jsou rovnocenná tlačítka; žádné přednastavené zaškrtnuté kategorie.
  • Lišta nezakrývá zaměřený prvek; obsah za ní lze dorolovat i při 400% zvětšení.
  • Volbu lze změnit z každé stránky; po zavření se zaměření vrátí na tlačítko.
  • Volba má verzi a při změně kategorií se lišta zeptá znovu.
  • Po uložení zazní stavová zpráva, kterou odečítač obrazovky přečte bez přerušení.