Start · Sprachen · JavaScript · Referenz · HTMLAnchorElement.pathname

HTMLAnchorElement.pathname

Eigenschaft

Liest oder setzt den Pfadanteil der URL eines <code>&lt;a&gt;</code>-Elements: beginnt mit <code>/</code>, ohne Query-String und Fragment.

seit JavaScript Baseline: alle Browser Kategorie: webapi

Signatur

HTMLAnchorElement.pathname

Beschreibung

Die Eigenschaft pathname eines HTMLAnchorElement liefert den Pfad der im href-Attribut hinterlegten URL. Dazu wird href zuerst gegen die Basis-URL des Dokuments aufgelöst. Der Wert beginnt mit / und enthält weder den Query-String (?…) noch das Fragment (#…). Bei URLs ohne hierarchischen Pfad, etwa mailto:, gibt die Eigenschaft den undurchsichtigen Pfad zurück (z. B. die E-Mail-Adresse), bei ungültigem oder fehlendem href den leeren String.

Die Eigenschaft ist schreibbar. Wenn du einen neuen Wert zuweist, wird das href-Attribut entsprechend geändert. Protokoll, Host, search und hash bleiben dabei erhalten. Fehlt der führende Schrägstrich, ergänzt der Browser ihn. Sonderzeichen werden prozentkodiert.

Typische Einsatzfälle sind das Hervorheben des aktiven Navigationspunkts (Vergleich mit location.pathname), das Erkennen interner Links in Single-Page-Anwendungen und das gezielte Umschreiben von Link-Zielen, ohne die URL von Hand zerlegen zu müssen. Die Eigenschaft gehört zum Mixin HTMLHyperlinkElementUtils, das auch HTMLAreaElement implementiert. Sie verhält sich genauso wie URL.pathname.

Parameter

Name Typ Default Beschreibung
$wert string Nur beim Setzen: der neue Pfad, z. B. "/blog/artikel". Ein fehlender führender / wird ergänzt, Sonderzeichen werden prozentkodiert.

Rückgabewert

Typ
string
Beschreibung
Der Pfad der aufgelösten URL mit führendem /, z. B. "/docs/index.html". Bei URLs mit nicht-hierarchischem Pfad (z. B. mailto:) der undurchsichtige Pfad, bei fehlendem oder ungültigem href der leere String.

Beispiele

Pfad eines Links auslesen

const link = document.createElement('a');
link.href = 'https://example.com/shop/produkte/42?farbe=rot#details';

console.log(link.pathname);
console.log(link.search);
console.log(link.hash);
/shop/produkte/42 ?farbe=rot #details

Aktiven Menüpunkt hervorheben

// Markiert alle Navigationslinks, deren Pfad zur aktuellen Seite passt
const normalisieren = (pfad) => pfad.replace(/\/$/, '') || '/';
const aktuell = normalisieren(location.pathname);

document.querySelectorAll('nav a').forEach((a) => {
  const istAktiv = a.origin === location.origin && normalisieren(a.pathname) === aktuell;
  a.classList.toggle('aktiv', istAktiv);
  if (istAktiv) a.setAttribute('aria-current', 'page');
});

Pfad setzen – Query und Fragment bleiben erhalten

const link = document.createElement('a');
link.href = 'https://example.com/alt/seite?id=7#oben';

link.pathname = 'neu/seite mit leerzeichen';
console.log(link.href);
https://example.com/neu/seite%20mit%20leerzeichen?id=7#oben

Relative Links werden aufgelöst

// Angenommen, das Dokument liegt unter https://example.com/docs/api/
const link = document.createElement('a');
link.href = '../guide/start.html';

console.log(link.getAttribute('href')); // Rohwert des Attributs
console.log(link.pathname);             // aufgelöster Pfad
../guide/start.html /docs/guide/start.html

// Wichtig · Fallstricke

  • Prozentkodierung: Der zurückgegebene Pfad ist kodiert (%20 statt Leerzeichen). Für die Anzeige oder für Vergleiche nutzt du decodeURIComponent(), am besten in einem try-Block, weil fehlerhafte Kodierungen einen URIError auslösen.
  • Schrägstrich am Ende: /blog und /blog/ sind unterschiedliche Pfade. Normalisiere sie vor einem Vergleich.
  • Auflösung: Der Wert basiert auf der aufgelösten URL, nicht auf dem Attribut-Rohwert. Wichtig ist dabei ein vorhandenes <base>-Element. Den Rohwert erhältst du mit getAttribute('href').
  • Nicht-hierarchische URLs: Bei mailto:, javascript: oder data: enthält pathname den undurchsichtigen Rest der URL, und eine Zuweisung hat keine Wirkung.
  • Sicherheit: Wenn du Pfade aus Benutzereingaben setzt, prüfe zusätzlich origin bzw. protocol. Ein Pfadwechsel ändert nicht das Ziel-Protokoll. Ein javascript:-Link bleibt also gefährlich.
  • Kompatibilität: Wird von allen modernen Browsern unterstützt. Ältere Internet-Explorer-Versionen lieferten den Pfad teils ohne führenden /. Für die URL-Verarbeitung ohne DOM-Element nimmst du new URL().