Start · Sprachen · JavaScript · Referenz · Window.name

Window.name

Eigenschaft

Liest oder setzt den Namen des Browsing-Kontextes eines Fensters, z. B. als Ziel für <code>target</code>-Attribute oder <code>window.open()</code>.

seit JavaScript Baseline: alle Browser Kategorie: webapi

Signatur

Window.name

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

Typ
string
Beschreibung
Der Name des Browsing-Kontextes. Ist kein Name gesetzt, ist es der leere String "". 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);
"" hauptfenster [object Object]

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);
vorschau

// 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.name daher als nicht vertrauenswürdige Eingabe und schreiben Sie ihn nie ungeprüft in innerHTML oder eval() (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, _parent und _top sind als target-Schlüsselwörter reserviert und sollten nicht als Fensternamen verwendet werden.
  • Das globale name ist identisch mit window.name. Wer auf oberster Skriptebene var name = 123 schreibt, erhält den String "123". Mit let/const oder innerhalb von Modulen tritt das nicht auf.
  • Wird mit noopener geöffnet, lässt sich das Zielfenster nicht über seinen Namen wiederverwenden.