Offerte audit
Typ iets om te zoeken...

Wcag uitgelegd

Focus verdwijnt na het sluiten van een dialoogvenster

Focus verdwijnt na het sluiten van een dialoogvenster — WCAG 2.4.3 Focusvolgorde (post 4/11)

Je klikt op “Verwijderen.” Een bevestigingspopup verschijnt. “Weet je het zeker?” Je drukt op “Annuleren.”

De popup sluit. Je drukt op Tab. Waar ben je?

Helemaal bovenaan de pagina. Bij het logo. Je was halverwege een tabel, je opende een popup, je sloot die, en nu moet je opnieuw door de hele pagina tabben om terug te komen waar je was.

Het probleem: na het sluiten van de popup keert de focus niet terug naar het element dat de popup opende. De focus gaat naar <body> — het begin van de pagina.

// Niet doen: focus verdwijnt
function sluitDialog() {
  dialog.style.display = "none";
}

// Wel doen: focus terug naar de trigger
let triggerElement = null;

function openDialog(trigger) {
  triggerElement = trigger;
  dialog.style.display = "block";
  dialog.querySelector("button")?.focus();
}

function sluitDialog() {
  dialog.style.display = "none";
  triggerElement?.focus(); // Terug naar waar je was
}

Het patroon is simpel:

  1. Bij openen: sla het trigger-element op
  2. Bij sluiten: geef de focus terug aan dat element

Test: open een dialoogvenster, sluit het, druk op Tab. Ga je verder waar je was? Of begin je weer bovenaan?

Zelf verder met dit onderwerp

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.

Negatieve outline-offset die de focus verbergt

Negatieve outline-offset die de focus verbergt

Een link met een donkere achtergrond. De focusindicator is er, een zwarte outline van 2 pixels. Maar outline-offset: -4px duwt die outline naar binnen. Onder de achtergrondkleur.

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.