Signatur
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 oderlocation.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);
}
Moderner Ersatz mit PerformanceNavigationTiming
const [entry] = performance.getEntriesByType('navigation');
if (entry) {
console.log(entry.type); // 'navigate' | 'reload' | 'back_forward' | 'prerender'
}
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');
}
// Wichtig · Fallstricke
- Veraltet:
performance.navigationist in Navigation Timing Level 2 als veraltet markiert. Browser unterstützen es noch aus Kompatibilitätsgründen, es kann aber jederzeit entfernt werden. Nutzen SiePerformanceNavigationTiming.type. - In Web Workern ist
performance.navigationnicht 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 mitevent.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.