aria-haspopup
Fortæller hjælpeteknologi, at aktivering af dette element åbner en popup, og hvilken type. Accepterer "menu", "listbox", "tree", "grid", "dialog" eller "true" / "false". Brug aria-expanded samtidig, så hjælpeteknologi også kan annoncere, om popuppen er åben.
Hvornår bruges den
På ethvert element, der åbner et midlertidigt overlay — en knap, der udløser en menu, et inputfelt, der åbner en listbox i en combobox, eller en ikonknap, der åbner en dialog. Attributten lader skærmlæseren annoncere noget som “Filter, menuknap” eller “Søg, har popup”, så brugeren ved, at aktivering af elementet vil vise mere brugerflade frem for at navigere eller sende en formular.
Undlad den på elementer, der blot viser eller skjuler et afsnit på samme side — et disclosure-element bør bruge aria-expanded alene; det viste indhold er en del af siden, ikke en popup.
Sådan fungerer den
Accepterer et fast sæt tokenværdier:
"menu"— åbner enrole="menu"(det mest almindelige tilfælde for menuknapper)."listbox"— åbner enrole="listbox", bruges i brugerdefinerede comboboxe."tree"— åbner enrole="tree"."grid"— åbner enrole="grid"(typisk datovælgere)."dialog"— åbner enrole="dialog"ellerrole="alertdialog"."true"— svarer til"menu"af bagudkompatibilitetshensyn; brug en af de specifikke værdier i stedet."false"— angiver eksplicit “har ingen popup”; standardværdien.
Par aria-haspopup med aria-expanded="true|false", så hjælpeteknologi også kan annoncere, om popuppen aktuelt er synlig. De to attributter gør forskellige ting — haspopup siger “der er en popup”, og expanded siger “og den er aktuelt synlig”.
Hyppige fejl
- Brug af
aria-haspopup="true"på en knap, der åbner en brugerdefineret datovælger (som reelt er et grid eller en dialog) — hjælpeteknologi annoncerer “menuknap”, og brugere trykker pil ned i forventning om menupunkter. - Udeladelse af
aria-expanded. Hjælpeteknologi siger “har popup”, men annoncerer aldrig åben/lukket-tilstanden, så brugeren ikke kan vide, om klikket havde nogen effekt. - Tilføjelse af
aria-haspopuppå et element, der faktisk ikke åbner en popup. Vildleder brugeren, der hører affordancen og ikke finder noget. - Brug af
aria-haspopuppå et link, der navigerer til en ny side. Det er ikke en popup; lad linket forblive et link. - Glemsel af at flytte fokus ind i en
dialog-popup eller ned til det førstemenuitemi enmenu. Attributten navngiver popup-typen, men styrer ikke fokus. - Angivelse af
aria-haspopup="dialog"uden at sætterole="dialog"på selve popuppen. De lovede semantikker optræder aldrig.
Eksempel
<!-- Menuknap -->
<button
type="button"
id="filter-btn"
aria-haspopup="menu"
aria-expanded="false"
aria-controls="filter-menu"
>
Filtrer
</button>
<ul id="filter-menu" role="menu" hidden>
<li role="menuitem">Alle</li>
<li role="menuitem">Ulæste</li>
<li role="menuitem">Markerede</li>
</ul>