Start · Sprachen · JavaScript · Referenz · PerformanceNavigation.type

PerformanceNavigation.type

Eigenschaft

Veraltete, schreibgeschützte Eigenschaft, die als <code>unsigned short</code> angibt, wie die Navigation zur aktuellen Seite erfolgt ist (normal, Neuladen, Verlauf).

seit JavaScript Veraltet (Navigation Timing Level 1) – Nachfolger: deprecated seit ja Kategorie: webapi

Signatur

PerformanceNavigation.type

Beschreibung

Die Eigenschaft performance.navigation.type gibt einen Zahlenwert zurück, der die Art der Navigation zur aktuellen Seite beschreibt. Sie gehört zur Spezifikation Navigation Timing Level 1 und wurde früher genutzt, um zum Beispiel festzustellen, ob Nutzer die Seite neu geladen oder über den Zurück-Button aufgerufen haben.

Mögliche Werte sind die Konstanten des PerformanceNavigation-Interfaces:

  • 0 – TYPE_NAVIGATE: normale Navigation (Link, Lesezeichen, Formularübermittlung, Eingabe in die Adresszeile, Skript).
  • 1 – TYPE_RELOAD: Neuladen der Seite (Reload-Button oder location.reload()).
  • 2 – TYPE_BACK_FORWARD: Navigation über den Verlauf (Zurück/Vor, history.back()).
  • 255 – TYPE_RESERVED: sonstige, nicht definierte Navigationsarten.

Die Eigenschaft ist veraltet. Für neuen Code sollte stattdessen PerformanceNavigationTiming.type verwendet werden, das über performance.getEntriesByType("navigation") erreichbar ist und lesbare Zeichenketten wie "navigate", "reload", "back_forward" und "prerender" liefert.

Beispiele

Navigationsart auslesen (veraltete API)

const { type } = performance.navigation;

switch (type) {
  case PerformanceNavigation.TYPE_NAVIGATE:
    console.log('Normale Navigation');
    break;
  case PerformanceNavigation.TYPE_RELOAD:
    console.log('Seite wurde neu geladen');
    break;
  case PerformanceNavigation.TYPE_BACK_FORWARD:
    console.log('Aufruf über den Verlauf');
    break;
  default:
    console.log('Unbekannte Navigationsart:', type);
}
Seite wurde neu geladen // nach F5

Moderner Ersatz mit PerformanceNavigationTiming

const [entry] = performance.getEntriesByType('navigation');

if (entry) {
  console.log(entry.type); // 'navigate' | 'reload' | 'back_forward' | 'prerender'
}
reload

Kompatible Hilfsfunktion mit Fallback

const getNavigationType = () => {
  const [entry] = performance.getEntriesByType?.('navigation') ?? [];
  if (entry) return entry.type;

  // Fallback für sehr alte Browser
  const legacy = performance.navigation?.type;
  const map = { 0: 'navigate', 1: 'reload', 2: 'back_forward' };
  return map[legacy] ?? 'unknown';
};

if (getNavigationType() === 'reload') {
  console.log('Formular-Entwurf aus sessionStorage wiederherstellen');
}
Formular-Entwurf aus sessionStorage wiederherstellen

// Wichtig · Fallstricke

  • Veraltet: performance.navigation ist in Navigation Timing Level 2 als veraltet markiert. Browser unterstützen es noch aus Kompatibilitätsgründen, es kann aber jederzeit entfernt werden. Nutzen Sie PerformanceNavigationTiming.type.
  • In Web Workern ist performance.navigation nicht verfügbar.
  • Seiten, die aus dem Back/Forward-Cache (bfcache) wiederhergestellt werden, laden nicht neu – der Wert ändert sich dabei nicht. Zur Erkennung eignet sich das pageshow-Event mit event.persisted.
  • Die Werte beziehen sich immer nur auf die letzte Navigation des aktuellen Dokuments, nicht auf Navigationen innerhalb einer SPA über die History-API.
  • Der Wert "prerender" existiert nur in der modernen API; die alte API kennt keine Entsprechung.