Signatur
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
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
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);
});
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);
// 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 mitwindow.open()geöffnet wurden. - Kein Ereignis: Der Aufruf löst kein
blur-Ereignis amwindowaus. 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
windowexistiert.