ARIA-Button

Was role="button" nicht mitliefert

Rolle ohne Namen, Rolle ohne Tastatur, Link in der Schaltfläche: drei Befunde.

Website prüfen
Beispiel im Prüfbericht Markierter Befund
Markierter Befund · Kritisch · WCAG 4.1.2ARIA-Schaltfläche ohne Namen

Schaltfläche im Röntgenbild

Eine Rolle ist noch kein Button

Das native Element ist eine vollständige Baugruppe. role="button" beschriftet nur ein Teil im Accessibility Tree. Den Rest müssten Sie selbst bauen.

Vollständig ab Werk

<button>

  • SemantikRolle und Nameeingebaut
  • TabFokuseingebaut
  • EnterAktivierungeingebaut
  • LeertasteAktivierungeingebaut
  • Formulartypeeingebaut

Nur die Rollenplakette

<div role="button">

  • SemantikRolle und Namevorhanden
  • Tabtabindex="0"ergänzen
  • Enterkeydownergänzen
  • Leertastekeydown + keyupergänzen
  • GesperrtZustand und Logikergänzen

Die kurze, robuste Lösung

<button type="button" id="filter-reset">
  Filter zurücksetzen
</button>
<p id="status" aria-live="polite"></p>

<script>
  const reset = document.querySelector('#filter-reset');
  const status = document.querySelector('#status');

  reset.addEventListener('click', () => {
    status.textContent = 'Filter wurden zurückgesetzt.';
  });
</script>

Der sichtbare Text liefert den Namen. type="button" verhindert, dass dieser Button in einem Formular versehentlich als Submit-Button arbeitet.

Falls das Element unveränderbar ist

<div id="filter-reset-custom"
  role="button" tabindex="0">
  Filter zurücksetzen
</div>
<p id="custom-status" aria-live="polite"></p>

<script>
  const reset = document.querySelector('#filter-reset-custom');
  const status = document.querySelector('#custom-status');

  function activate() {
    status.textContent = 'Filter wurden zurückgesetzt.';
  }

  reset.addEventListener('click', activate);
  reset.addEventListener('keydown', (event) => {
    if (event.key === 'Enter') activate();
    if (event.key === ' ') event.preventDefault();
  });
  reset.addEventListener('keyup', (event) => {
    if (event.key !== ' ') return;
    event.preventDefault();
    activate();
  });
</script>

Dazu gehören sichtbarer Fokus und Button-Styling im CSS. Bei aria-disabled="true" müssen alle Handler die Aktion selbst unterdrücken.

So prüfen Sie es

  1. Erreichen Sie die Schaltfläche mit Tab. Der Fokus muss sichtbar sein.
  2. Lösen Sie dieselbe Aktion getrennt mit Enter und Leertaste aus.
  3. Halten Sie die Leertaste gedrückt. Die Seite darf dabei nicht scrollen.
  4. Prüfen Sie Rolle und Name im Accessibility Tree: „Filter zurücksetzen, Button“.
  5. Setzen Sie den gesperrten Zustand. Die Aktion darf weder per Zeiger noch Taste laufen.

Aus dem Prüfbericht

Drei Stellen, drei Befunde

Zum Mitnehmen

Die Schaltflächen, korrigiert

Ein echtes button-Element, oder alles, was ihm fehlt, per Hand.

Korrektur in 2 Schritten ansehen
  1. Das button-Element statt der Rolle

    button bringt Rolle, Name aus dem Text, Tab-Stopp, Enter und Leertaste mit. Ein div braucht alles einzeln.

    KorrekturvergleichSchritt 1 · HTML

    Vorher

    <div role="button" class="swap" onclick="tauschen()">
      <svg aria-hidden="true"><use href="#swap"></use></svg>
    </div>

    Nachher

    <button type="button" class="swap" onclick="tauschen()"
      aria-label="Start und Ziel tauschen">
      <svg aria-hidden="true"><use href="#swap"></use></svg>
    </button>

    Markierte Zeilen wurden geändert

    So prüfen Sie es Tab auf den Pfeil, Enter. Start und Ziel tauschen, und das Vorleseprogramm nennt den Namen.

  2. Den Link neben den Umschalter stellen

    Ein Link gehört nicht in einen Button. Als Nachbar hat er seinen eigenen Namen und Tab-Stopp.

    KorrekturvergleichSchritt 2 · HTML

    Vorher

    <button type="button" aria-pressed="false">
      Route merken
      <a href="/route">Details zur Route</a>
    </button>

    Nachher

    <button type="button" aria-pressed="false">Route merken</button>
    <a href="/route">Details zur Route</a>

    Markierte Zeilen wurden geändert

    So prüfen Sie es Ein Vorleseprogramm sagt „Route merken, Umschaltfläche, nicht gedrückt“ und dann „Details zur Route, Link“.

Werbung

Kostenloser Website-Barrierefreiheits-Check

Website auf Barrierefreiheit prüfen.

Technische WCAG-Warnsignale erkennen. Kritische Stellen zuerst prüfen.

Der Website-Check ist bereit.

Werbung

Ein letzter Schritt

Prüfen, bevor Sie gehen.

Finden Sie automatisch erkennbare Barrieren auf Ihrer eigenen Website.

Website prüfen

Kostenlos starten · keine Installation

Automatisches Screening. Tastaturbedienung und Screenreader bleiben manuelle Prüfung.