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í.

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č na web přišel.

Správná lišta je oblast (region) s vlastním nadpisem, která se v dokumentu nachází blízko začátku, hned za odkazy na přeskočení, ale zaměření klávesnice na ni automaticky nepřesouvá. Uživatel klávesnice ji najde po několika (zpravidla 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ých informací.

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 nebo obsah třetích stran. Kdo trvá na modálním okně, přiznává, že si chce souhlas vynutit.

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.

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ž mezi souhlasy 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.
  • Při změně nástrojů třetích stran nebo ukládaných informací se lišta zeptá na souhlas znovu.
  • Po uložení zazní stavová zpráva, kterou odečítač obrazovky přečte bez přerušení.