Wcag uitgelegd

Dialoogvenster krijgt geen focus bij openen

Dialoogvenster krijgt geen focus bij openen — WCAG 2.4.3 Focusvolgorde (post 2/11)

Een popup verschijnt. “Wil je cookies accepteren?”

Je drukt op Tab. En je zit in het navigatiemenu. Achter de popup. De focus is niet naar het dialoogvenster verplaatst.

Je kunt de popup zien. Maar niet bedienen. Niet zonder tientallen keren op Tab te drukken tot je toevallig bij de knoppen in de popup aankomt.

Dit is een van de meest frustrerende toetsenbordproblemen. Het venster is er. De knoppen zijn er. Maar de focus is ergens anders.

// Niet doen: popup tonen zonder focus te verplaatsen
function openDialog() {
  dialog.style.display = "block";
  // Focus blijft waar die was
}

// Wel doen: focus naar het dialoogvenster
function openDialog() {
  dialog.style.display = "block";
  dialog.querySelector("button, [href], input")?.focus();
}

Of gebruik het <dialog>-element:

<dialog id="mijnDialog">
  <h2>Cookies</h2>
  <button>Accepteren</button>
  <button>Weigeren</button>
</dialog>
document.getElementById("mijnDialog").showModal();
// Focus gaat automatisch naar het dialoogvenster

showModal() doet het zware werk: focus verplaatsen, focus trap, Escape om te sluiten. Allemaal gratis.

Geldt voor: cookiebanners, bevestigingspopups, lightboxes, mobiele menu’s, videoplayers in een overlay, formulieren in een modal.

Related Posts

Focusindicator die opgaat in de achtergrond

Focusindicator die opgaat in de achtergrond

Er is een focusindicator. Technisch gezien. Een lichtgrijze outline (#E0E0E0) op een witte achtergrond. 1 pixel dik.

JavaScript dat de focus actief verwijdert

JavaScript dat de focus actief verwijdert

element.addEventListener("focus", function() { this.blur(); }); Een element krijgt focus. JavaScript verwijdert de focus direct. Het element heeft een fractie van een seconde focus gehad. De gebruiker merkt niets.

Focus springt onverwacht door de pagina

Focus springt onverwacht door de pagina

Tab. Je bent in het hoofdmenu. Tab. Je bent in de sidebar. Tab. Je bent terug in het hoofdmenu. Tab. Nu ben je in de content.