Start · Sprachen · JavaScript · Referenz · HTMLAnchorElement.hreflang

HTMLAnchorElement.hreflang

Eigenschaft

Liest oder setzt den Sprachhinweis (BCP-47-Tag) der verlinkten Ressource und spiegelt das HTML-Attribut <code>hreflang</code> eines <code>&lt;a&gt;</code>-Elements.

seit JavaScript Baseline: alle Browser Kategorie: webapi

Signatur

HTMLAnchorElement.hreflang

Beschreibung

Die Eigenschaft hreflang des HTMLAnchorElement-Interfaces spiegelt das gleichnamige HTML-Attribut des <a>-Elements wider. Sie enthält ein Sprach-Tag nach BCP 47 (z. B. "de", "en-US", "pt-BR"). Das Tag gibt an, in welcher Sprache das Linkziel verfasst ist.

Der Wert ist ein reiner Hinweis: Der Browser ändert dadurch weder die Navigation noch den Accept-Language-Header. Nützlich ist er für Sprachwähler, für Hilfstechniken und Suchmaschinen sowie für CSS-Selektoren wie a[hreflang="en"], mit denen sich fremdsprachige Links optisch kennzeichnen lassen.

Fehlt das Attribut, gibt die Eigenschaft einen leeren String zurück. Wenn Sie einen Wert zuweisen, wird das Attribut sofort im DOM gesetzt. Der Browser prüft dabei nicht, ob das Sprach-Tag gültig ist.

Parameter

Name Typ Default Beschreibung
$value string "" Beim Setzen: ein BCP-47-Sprach-Tag wie "de" oder "en-GB". Der Wert wird als Attribut hreflang übernommen.

Rückgabewert

Typ
string
Beschreibung
Der aktuelle Wert des Attributs hreflang. Ist das Attribut nicht vorhanden, ein leerer String "".

Beispiele

Sprache eines Links auslesen

// HTML: <a id="doku" href="https://example.com/en/docs" hreflang="en">Docs</a>
const link = document.getElementById('doku');
console.log(link.hreflang);

// Link ohne Attribut
const leer = document.createElement('a');
console.log(JSON.stringify(leer.hreflang));
en ""

Sprachwähler dynamisch aufbauen

const sprachen = [
  { code: 'de', label: 'Deutsch', url: '/de/' },
  { code: 'en', label: 'English', url: '/en/' },
  { code: 'fr', label: 'Français', url: '/fr/' }
];

const nav = document.createElement('nav');
for (const { code, label, url } of sprachen) {
  const a = document.createElement('a');
  a.href = url;
  a.hreflang = code;   // setzt das Attribut hreflang
  a.lang = code;       // Sprache des Linktexts selbst
  a.textContent = label;
  nav.append(a, ' ');
}
document.body.append(nav);
console.log(nav.innerHTML);
<a href="/de/" hreflang="de" lang="de">Deutsch</a> <a href="/en/" hreflang="en" lang="en">English</a> <a href="/fr/" hreflang="fr" lang="fr">Français</a>

Fremdsprachige Links kennzeichnen

const seitenSprache = document.documentElement.lang || 'de';

document.querySelectorAll('a[hreflang]').forEach((a) => {
  const ziel = a.hreflang.toLowerCase().split('-')[0];
  if (ziel !== seitenSprache.toLowerCase().split('-')[0]) {
    a.textContent += ` (${ziel.toUpperCase()})`;
    a.title = `Inhalt in Sprache: ${a.hreflang}`;
  }
});

// Wichtig · Fallstricke

  • Nur ein Hinweis: hreflang hat keinen Einfluss auf die Navigation und legt auch nicht fest, in welcher Sprache der Server antwortet.
  • Keine Prüfung: Ungültige Tags wie "deutsch" werden ohne Fehlermeldung übernommen. Zur Prüfung können Sie Intl.getCanonicalLocales() verwenden. Diese Funktion wirft bei einem ungültigen Tag einen RangeError.
  • Groß-/Kleinschreibung: Der Wert wird genau so zurückgegeben, wie er gesetzt wurde. Für Vergleiche sollten Sie ihn normalisieren, z. B. mit toLowerCase().
  • Verwechseln Sie hreflang nicht mit lang: lang beschreibt die Sprache des Linktexts, hreflang die Sprache des Linkziels.
  • Für SEO-Alternativen (hreflang-Annotationen) werten Suchmaschinen vor allem <link rel="alternate" hreflang="…"> im <head> aus, weniger <a>-Elemente.
  • Die Eigenschaft wird von allen gängigen Browsern seit Langem unterstützt.