Signatur
Beschreibung
window.name ist ein String, der den Namen des aktuellen Browsing-Kontextes (Tab, Fenster oder <iframe>) enthält. Über diesen Namen lässt sich ein Fenster gezielt ansprechen: als Wert des target-Attributs von Links und Formularen oder als zweites Argument von window.open(url, name). Existiert bereits ein Fenster mit diesem Namen, wird die URL dort geladen, statt ein neues Fenster zu öffnen.
Bei einem <iframe> entspricht der Anfangswert dem Attribut name des Elements. Fenster, die mit window.open() geöffnet werden, erhalten den übergebenen Namen. Ein normaler Tab hat meist den leeren String "" als Namen.
Jeder zugewiesene Wert wird mit String() in einen String umgewandelt. Früher blieb der Wert über Seitennavigationen hinweg erhalten und wurde deshalb als behelfsmäßiger Speicher über Domaingrenzen hinweg missbraucht. Moderne Browser setzen den Namen zurück, sobald zu einer Seite eines anderen Ursprungs (Origin) navigiert wird. Für die Datenspeicherung sollten Sie daher sessionStorage oder localStorage verwenden.
Rückgabewert
"". Zugewiesene Werte werden immer in einen String umgewandelt.Beispiele
Namen lesen und setzen
console.log(JSON.stringify(window.name)); // meist leer
window.name = 'hauptfenster';
console.log(window.name);
// Nicht-Strings werden umgewandelt
window.name = { id: 1 };
console.log(window.name);
Benanntes Fenster mit window.open wiederverwenden
// Der erste Aufruf öffnet ein neues Fenster namens "hilfe",
// weitere Aufrufe laden die URL in dasselbe Fenster
const zeigeHilfe = (thema) => {
const win = window.open(`/hilfe/${thema}`, 'hilfe', 'width=600,height=400');
win?.focus();
};
document.querySelector('#hilfe-export')
?.addEventListener('click', () => zeigeHilfe('export'));
Links in einem benannten iframe öffnen
// HTML: <iframe name="vorschau"></iframe>
const frame = document.querySelector('iframe[name="vorschau"]');
console.log(frame.contentWindow.name);
// Links mit target="vorschau" werden im iframe geladen
const link = document.createElement('a');
link.href = '/artikel/42';
link.target = 'vorschau';
link.textContent = 'Artikel-Vorschau';
document.body.append(link);
// Wichtig · Fallstricke
- Nicht zum Speichern von Daten verwenden: Der Wert kann von fremden Seiten gelesen worden sein bzw. von Seiten stammen, die zuvor im selben Tab geladen waren. Behandeln Sie
window.namedaher als nicht vertrauenswürdige Eingabe und schreiben Sie ihn nie ungeprüft ininnerHTMLodereval()(XSS-Gefahr). - Moderne Browser (Firefox 88+, Safari, Chromium) setzen den Namen bei Navigation zu einem anderen Ursprung auf
""zurück. Beim Zurücknavigieren wird er wiederhergestellt. - Die Namen
_blank,_self,_parentund_topsind alstarget-Schlüsselwörter reserviert und sollten nicht als Fensternamen verwendet werden. - Das globale
nameist identisch mitwindow.name. Wer auf oberster Skriptebenevar name = 123schreibt, erhält den String"123". Mitlet/constoder innerhalb von Modulen tritt das nicht auf. - Wird mit
noopenergeöffnet, lässt sich das Zielfenster nicht über seinen Namen wiederverwenden.