Start · Sprachen · JavaScript · Referenz · HTMLAnchorElement.target

HTMLAnchorElement.target

Eigenschaft

Liest oder setzt den Browsing-Kontext (z. B. <code>_blank</code>, <code>_self</code> oder einen Fensternamen), in dem das Ziel eines <code>&lt;a&gt;</code>-Links geöffnet wird.

seit JavaScript Baseline: alle Browser Kategorie: webapi

Signatur

HTMLAnchorElement.target

Beschreibung

Die Eigenschaft target spiegelt das HTML-Attribut target eines <a>-Elements wider. Sie ist ein String, der festlegt, wo die verlinkte Ressource angezeigt wird: im aktuellen Tab, in einem neuen Tab oder Fenster, im übergeordneten Frame oder in einem benannten Fenster bzw. <iframe>.

Gültige Werte sind die Schlüsselwörter

  • _self – aktueller Browsing-Kontext (Standardverhalten, wenn das Attribut fehlt),
  • _blank – neuer, unbenannter Browsing-Kontext (meist ein neuer Tab),
  • _parent – übergeordneter Browsing-Kontext (bei verschachtelten Frames),
  • _top – oberster Browsing-Kontext (verlässt alle Frames),
  • _unfencedTop – experimentell, für Fenced Frames,

oder ein beliebiger Name. Wenn es bereits ein Fenster oder einen <iframe> mit diesem Namen (name-Attribut) gibt, wird der Link dort geöffnet, sonst wird ein neuer Kontext mit diesem Namen angelegt.

Typische Anwendungsfälle sind, externe Links per Skript in neuen Tabs zu öffnen, Links gezielt in ein eingebettetes <iframe> zu laden oder das Verhalten abhängig vom Kontext (z. B. innerhalb eines Frames) anzupassen. Wenn das Attribut fehlt, liefert die Eigenschaft einen leeren String "". Beim Schreiben wird das HTML-Attribut direkt geändert.

Parameter

Name Typ Default Beschreibung
$value string "" Beim Setzen: Schlüsselwort (_self, _blank, _parent, _top) oder Name eines Browsing-Kontexts. Wird unverändert ins Attribut target geschrieben.

Rückgabewert

Typ
string
Beschreibung
Der aktuelle Wert des target-Attributs bzw. "", wenn keins gesetzt ist. Der tatsächlich wirksame Standard ist dann _self, sofern kein <base target> etwas anderes festlegt.

Beispiele

Wert auslesen und setzen

// <a id="doku" href="https://developer.mozilla.org/">MDN</a>
const link = document.getElementById('doku');

console.log(JSON.stringify(link.target)); // Attribut fehlt

link.target = '_blank';
console.log(link.target);
console.log(link.getAttribute('target'));
"" _blank _blank

Alle externen Links sicher in neuem Tab öffnen

const externalLinks = [...document.querySelectorAll('a[href]')]
  .filter((a) => a.hostname && a.hostname !== location.hostname);

for (const a of externalLinks) {
  a.target = '_blank';
  // Schutz vor Tabnabbing und Referrer-Weitergabe
  a.relList.add('noopener', 'noreferrer');
}

console.log(`${externalLinks.length} externe Links angepasst`);
3 externe Links angepasst

Links in ein benanntes iframe laden

// <iframe name="vorschau" src="about:blank"></iframe>
// <nav id="menu"><a href="/seite-a.html">A</a><a href="/seite-b.html">B</a></nav>
const menuLinks = document.querySelectorAll('#menu a');

menuLinks.forEach((a) => {
  a.target = 'vorschau'; // entspricht dem name-Attribut des iframes
});

console.log([...menuLinks].map((a) => a.target));
["vorschau", "vorschau"]

Aus einem Frame ausbrechen

// Wenn die Seite in einem Frame läuft, sollen Links das ganze Fenster ersetzen
if (window.self !== window.top) {
  document.querySelectorAll('a').forEach((a) => {
    if (!a.target) a.target = '_top';
  });
}

// Wichtig · Fallstricke

Sicherheit (Tabnabbing): Bei target="_blank" konnte die geöffnete Seite früher über window.opener auf die Ursprungsseite zugreifen und sie z. B. auf eine Phishing-Seite umleiten. Aktuelle Browser setzen bei _blank-Links auf <a> automatisch noopener. Trotzdem sollte man rel="noopener noreferrer" (bzw. relList.add(...)) ausdrücklich setzen, damit ältere Browser geschützt sind und die Absicht im Code erkennbar ist.

Leerer String: Ohne Attribut liefert die Eigenschaft "", nicht "_self". Ein <base target="…"> im Dokumentkopf beeinflusst das tatsächliche Verhalten, der Wert von a.target ändert sich dadurch aber nicht.

Schlüsselwörter: Sie werden ohne Beachtung der Groß-/Kleinschreibung ausgewertet (_BLANK wirkt wie _blank). Unbekannte Werte mit Unterstrich (z. B. _new) gelten nicht als Schlüsselwort, sondern werden als Fenstername behandelt. Das führt oft zu dem Fehler, dass alle Links in denselben zweiten Tab laden.

Barrierefreiheit: Neue Tabs ohne Vorwarnung können Nutzer verwirren. Weise sichtbar oder per Screenreader-Text darauf hin.

Wird von allen Browsern unterstützt. _unfencedTop ist experimentell und nur in Chromium verfügbar.