Start · Sprachen · JavaScript · Referenz · Performance.navigation

Performance.navigation

Eigenschaft

Veraltete, schreibgeschützte Eigenschaft, die ein <code>PerformanceNavigation</code>-Objekt mit Navigationstyp und Anzahl der Weiterleitungen des aktuellen Dokuments liefert.

seit JavaScript Navigation Timing Level 1 – veraltet (deprecated), deprecated seit ja Kategorie: webapi

Signatur

get Performance.navigation

Beschreibung

Die schreibgeschützte Eigenschaft performance.navigation gibt ein PerformanceNavigation-Objekt zurück. Es beschreibt, wie das aktuelle Dokument geladen wurde, und besitzt zwei Eigenschaften: type (Art der Navigation) und redirectCount (Anzahl der Weiterleitungen bis zum Erreichen der Seite).

Für type gibt es folgende numerische Werte:

  • 0 – TYPE_NAVIGATE: normale Navigation (Link, Adressleiste, Formular, Skript)
  • 1 – TYPE_RELOAD: Neuladen der Seite
  • 2 – TYPE_BACK_FORWARD: Navigation über den Verlauf (Zurück/Vor)
  • 255 – TYPE_RESERVED: sonstige Navigationsart

Die Eigenschaft stammt aus der Spezifikation Navigation Timing Level 1 und gilt als veraltet. Für neuen Code sollte stattdessen PerformanceNavigationTiming verwendet werden, das man über performance.getEntriesByType("navigation") erhält. Dessen Eigenschaft type liefert lesbare Zeichenketten ("navigate", "reload", "back_forward", "prerender") sowie hochauflösende Zeitstempel.

performance.navigation ist nur noch für ältere Codebasen oder als Rückfalllösung für sehr alte Browser von Bedeutung.

Rückgabewert

Typ
PerformanceNavigation
Beschreibung
Ein Objekt mit den schreibgeschützten Eigenschaften type (number: 0, 1, 2 oder 255) und redirectCount (number) sowie der Methode toJSON().

Beispiele

Navigationstyp und Weiterleitungen auslesen

const nav = performance.navigation;

const typen = {
  0: 'Normale Navigation',
  1: 'Neuladen',
  2: 'Zurück/Vor im Verlauf',
  255: 'Sonstige'
};

console.log(`Typ: ${typen[nav.type]}`);
console.log(`Weiterleitungen: ${nav.redirectCount}`);
Typ: Neuladen Weiterleitungen: 0

Neuladen erkennen – moderne API mit Rückfall auf die veraltete

const istNeuladen = () => {
  const [eintrag] = performance.getEntriesByType('navigation');
  if (eintrag) {
    // Moderne API: PerformanceNavigationTiming
    return eintrag.type === 'reload';
  }
  // Rückfall für alte Browser
  return performance.navigation?.type === performance.navigation?.TYPE_RELOAD;
};

if (istNeuladen()) {
  console.log('Seite wurde neu geladen – Formularentwurf wiederherstellen');
}
Seite wurde neu geladen – Formularentwurf wiederherstellen

Objekt serialisieren (z. B. für Analytics)

const daten = performance.navigation.toJSON();
console.log(JSON.stringify(daten));

// Versand an einen Analytics-Endpunkt
navigator.sendBeacon('/analytics/nav', JSON.stringify(daten));
{"type":0,"redirectCount":0}

// Wichtig · Fallstricke

  • Veraltet: Die Eigenschaft kann in Zukunft entfernt werden. Nutze performance.getEntriesByType("navigation")[0] (PerformanceNavigationTiming) für neuen Code.
  • Nicht in Workern verfügbar: In Web Workern existiert performance.navigation nicht, prüfe daher vorher mit optionaler Verkettung (?.).
  • Weiterleitungen: redirectCount zählt nur Weiterleitungen innerhalb desselben Ursprungs; bei Cross-Origin-Weiterleitungen ist der Wert 0.
  • Back/Forward-Cache: Wird eine Seite aus dem bfcache wiederhergestellt, wird das Skript nicht neu ausgeführt – der Typ ändert sich nicht. Erkenne solche Fälle über das pageshow-Ereignis mit event.persisted.
  • Kompatibilität: Noch in Chrome, Firefox, Safari und Edge vorhanden, aber als deprecated markiert; TypeScript kennzeichnet die Eigenschaft ebenfalls als veraltet.