Start · Sprachen · JavaScript · Referenz · NavigationDestination.key

NavigationDestination.key

Eigenschaft

Gibt den <code>key</code> des Ziel-<code>NavigationHistoryEntry</code> zurück, wenn <code>navigationType</code> gleich <code>"traverse"</code> ist, sonst einen leeren String.

seit JavaScript Navigation API – Chromium 102+, Safari 26.2+, Fire Kategorie: webapi

Signatur

NavigationDestination.key

Beschreibung

Die schreibgeschützte Eigenschaft key der Schnittstelle NavigationDestination liefert den eindeutigen Schlüssel des Verlaufseintrags, zu dem eine Navigation führt. Auf das NavigationDestination-Objekt greifen Sie über NavigateEvent.destination im navigate-Event von window.navigation zu.

Einen Wert hat die Eigenschaft nur, wenn NavigateEvent.navigationType gleich "traverse" ist, also wenn der Benutzer oder der Code mit Zurück/Vorwärts bzw. navigation.traverseTo(), back() oder forward() zu einem bereits vorhandenen Eintrag springt. Bei "push", "replace" und "reload" ist sie ein leerer String, weil das Ziel entweder noch nicht existiert oder, beim Neuladen, kein Wechsel zu einem anderen Eintrag stattfindet.

Der key steht für einen Platz in der Verlaufsliste und nicht für einen bestimmten Eintrag. Bei navigation.navigate(url, { history: "replace" }) bekommt der neue Eintrag eine neue id, behält aber den key. Deshalb eignet sich key für „Springe zurück zu dieser Stelle“ mit navigation.traverseTo(key). Wenn Sie Zustandsdaten an einen konkreten Eintrag binden wollen, nehmen Sie stattdessen id.

Rückgabewert

Typ
string
Beschreibung
Der key des Ziel-NavigationHistoryEntry (vom Browser erzeugt, z. B. im UUID-Format) bei Traverse-Navigationen, sonst ein leerer String "".

Beispiele

Schlüssel des Ziels bei Zurück/Vorwärts protokollieren

navigation.addEventListener("navigate", (event) => {
  const { navigationType, destination } = event;
  if (navigationType === "traverse") {
    console.log("Traverse zu Eintrag mit key:", destination.key);
  } else {
    // bei push/replace/reload immer leer
    console.log(`${navigationType}: key = "${destination.key}"`);
  }
});
Traverse zu Eintrag mit key: 3f1c0a9e-... push: key = ""

Gecachten Seitenzustand beim Zurückspringen wiederherstellen

// Zustand pro Verlaufsplatz (key) zwischenspeichern
const viewCache = new Map();

const renderPage = async (url) => {
  const res = await fetch(url);
  document.querySelector("main").innerHTML = await res.text();
};

navigation.addEventListener("navigate", (event) => {
  if (!event.canIntercept || event.hashChange) return;

  // aktuellen Inhalt unter dem key des aktuellen Eintrags ablegen
  viewCache.set(navigation.currentEntry.key, document.querySelector("main").innerHTML);

  event.intercept({
    handler: async () => {
      const key = event.destination.key; // nur bei "traverse" gefüllt
      if (key && viewCache.has(key)) {
        document.querySelector("main").innerHTML = viewCache.get(key);
        return;
      }
      await renderPage(event.destination.url);
    },
  });
});

Prüfen, ob zur Startseite zurückgesprungen wird

// key des ersten Eintrags merken
const homeKey = navigation.entries()[0]?.key;

navigation.addEventListener("navigate", (event) => {
  if (event.navigationType === "traverse" && event.destination.key === homeKey) {
    console.log("Navigation zurück zum Startpunkt");
  }
});

// später z. B. per Button:
// navigation.traverseTo(homeKey);
Navigation zurück zum Startpunkt

// Wichtig · Fallstricke

  • Leerer String statt null: Außerhalb von "traverse" ist key immer "". Prüfen Sie mit if (destination.key) oder vergleichen Sie direkt navigationType.
  • key oder id: key bleibt bei einer Ersetzung ("replace") erhalten, id ändert sich. Für Caches, die an genau einen Eintrag gebunden sind, ist id oft die bessere Wahl. Für navigation.traverseTo() brauchen Sie dagegen key.
  • Die Schlüssel werden vom Browser erzeugt. Verlassen Sie sich nicht auf ihr Format und berechnen Sie sie nicht selbst.
  • Browser-Kompatibilität: Die Navigation API gibt es seit Chromium 102 (Chrome, Edge, Opera), in Safari ab 26.2 und in Firefox ab 147. Ältere Browser unterstützen sie nicht. Prüfen Sie deshalb vorher mit if ("navigation" in window) und nutzen Sie sonst die History API (popstate) als Ersatz.
  • Die Navigation API arbeitet nur mit gleichem Ursprung (same-origin). Einträge aus anderen Ursprüngen oder aus anderen Frames bekommen Sie nicht zu sehen.