Start · Sprachen · JavaScript · Referenz · Window.blur()

Window.blur()

Methode

<code>window.blur()</code> sollte früher den Fokus vom Fenster entfernen. In modernen Browsern hat die Methode laut Spezifikation keine Wirkung mehr.

seit JavaScript Baseline: alle Browser (heute wirkungslos) deprecated seit ja Kategorie: webapi

Signatur

Window.prototype.blur()

Beschreibung

window.blur() war ursprünglich dafür gedacht, dem aktuellen Browserfenster den Tastaturfokus zu entziehen und es hinter andere Fenster zu schieben. Typisch war das für sogenannte „Pop-under“-Werbung: Ein neues Fenster wurde geöffnet und sofort in den Hintergrund geschoben.

Weil das häufig missbraucht wurde, legt der HTML-Standard heute fest: Die Methode tut nichts. Alle aktuellen Browser (Chrome, Firefox, Safari, Edge) halten sich daran. Der Aufruf löst keinen Fehler aus, verändert aber weder den Fokus noch die Reihenfolge der Fenster und löst auch kein blur-Ereignis aus.

Die Methode existiert nur noch, damit alter Code nicht abbricht. In neuem Code hat sie keinen Nutzen. Wenn Sie den Fokus von einem Element nehmen wollen, verwenden Sie HTMLElement.prototype.blur(), zum Beispiel document.activeElement.blur(). Ob die Seite gerade den Fokus hat, verraten document.hasFocus() und die Ereignisse focus/blur am window.

Rückgabewert

Typ
undefined
Beschreibung
Kein Rückgabewert.

Beispiele

Aufruf ohne Wirkung

// Wirft keinen Fehler, bewirkt aber nichts
console.log(document.hasFocus()); // z. B. true
const result = window.blur();
console.log(result);              // undefined
console.log(document.hasFocus()); // weiterhin true
true undefined true

Moderne Alternative: Fokus vom aktiven Element entfernen

// Nach dem Absenden eines Formulars den Fokus vom Eingabefeld nehmen
// (z. B. damit auf Mobilgeräten die Bildschirmtastatur schließt)
const form = document.querySelector('#search');
form.addEventListener('submit', (event) => {
  event.preventDefault();
  if (document.activeElement instanceof HTMLElement) {
    document.activeElement.blur();
  }
  console.log('Fokus entfernt:', document.activeElement === document.body);
});
Fokus entfernt: true

Erkennen, wann das Fenster den Fokus verliert

// Statt den Fokus per Skript zu steuern, auf Änderungen reagieren
const onWindowBlur = () => console.log('Fenster hat den Fokus verloren');
const onWindowFocus = () => console.log('Fenster hat den Fokus wieder');

window.addEventListener('blur', onWindowBlur);
window.addEventListener('focus', onWindowFocus);

// Später aufräumen:
// window.removeEventListener('blur', onWindowBlur);
// window.removeEventListener('focus', onWindowFocus);
Fenster hat den Fokus verloren (beim Wechsel in einen anderen Tab)

// Wichtig · Fallstricke

  • Wirkungslos: Laut HTML-Standard macht window.blur() nichts. Verlassen Sie sich nicht darauf, dass sich Fokus oder Fensterreihenfolge ändern. Das gilt auch für Fenster, die mit window.open() geöffnet wurden.
  • Kein Ereignis: Der Aufruf löst kein blur-Ereignis am window aus. Tests, die das erwarten, schlagen fehl.
  • Nicht verwechseln mit HTMLElement.prototype.blur(). Diese Methode funktioniert weiterhin und nimmt einem Element den Fokus.
  • Verwandt: Auch window.focus() ist stark eingeschränkt. Browser erlauben den Aufruf meist nur bei einer Nutzeraktion oder für selbst geöffnete Pop-ups.
  • Kompatibilität: Die Methode ist in allen Browsern vorhanden, damit alter Code nicht mit einem Fehler abbricht. In Node.js gibt es sie nicht, weil dort kein window existiert.