Signatur
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 Seite2–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
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}`);
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');
}
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));
// 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.navigationnicht, prüfe daher vorher mit optionaler Verkettung (?.). - Weiterleitungen:
redirectCountzählt nur Weiterleitungen innerhalb desselben Ursprungs; bei Cross-Origin-Weiterleitungen ist der Wert0. - 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 mitevent.persisted. - Kompatibilität: Noch in Chrome, Firefox, Safari und Edge vorhanden, aber als deprecated markiert; TypeScript kennzeichnet die Eigenschaft ebenfalls als veraltet.