Signatur
Beschreibung
Die Eigenschaft type eines PerformanceNavigationTiming-Eintrags liefert einen String, der die Art der Navigation zum aktuellen Dokument beschreibt. Den Eintrag erhält man über performance.getEntriesByType("navigation")[0] oder über einen PerformanceObserver mit dem Typ "navigation".
Mögliche Werte:
"navigate"– normale Navigation: Link-Klick, Eingabe der URL, Formularversand, Skript-Navigation (z. B.location.href = …), Lesezeichen."reload"– Neuladen der Seite, etwa über den Reload-Button oderlocation.reload()."back_forward"– Navigation über den Verlauf (Zurück/Vorwärts-Button,history.back(),history.go())."prerender"– die Seite wurde vorab gerendert (z. B. über die Speculation Rules API).
Typische Anwendungsfälle sind Performance-Monitoring (RUM), bei dem Ladezeiten nach Navigationsart getrennt ausgewertet werden (ein Reload profitiert oft vom Cache und verfälscht sonst Statistiken), sowie Analyse-Logik, die Reloads nicht als neue Seitenaufrufe zählen soll. Die Eigenschaft ersetzt das veraltete performance.navigation.type mit seinen numerischen Konstanten.
Rückgabewert
Beispiele
Navigationsart auslesen
const [nav] = performance.getEntriesByType("navigation");
if (nav) {
console.log(`Navigationsart: ${nav.type}`);
}
Reloads aus der Seitenaufruf-Statistik ausschließen
const [nav] = performance.getEntriesByType("navigation");
const isReload = nav?.type === "reload";
if (!isReload) {
// Nur echte Seitenaufrufe an das Analyse-Backend senden
navigator.sendBeacon("/analytics/pageview", JSON.stringify({
url: location.pathname,
navigationType: nav?.type ?? "unknown"
}));
} else {
console.log("Reload erkannt – kein neuer Pageview gezählt.");
}
Ladezeit nach Navigationsart per PerformanceObserver erfassen
const observer = new PerformanceObserver((list) => {
for (const entry of list.getEntries()) {
const loadTime = Math.round(entry.loadEventEnd - entry.startTime);
console.log(`[${entry.type}] Ladezeit: ${loadTime} ms`);
}
});
// buffered: true liefert auch den bereits erfassten Eintrag
observer.observe({ type: "navigation", buffered: true });
Wiederherstellung aus dem bfcache erkennen
// Bei bfcache-Wiederherstellung entsteht KEIN neuer Navigation-Eintrag
window.addEventListener("pageshow", (event) => {
if (event.persisted) {
console.log("Aus dem bfcache wiederhergestellt");
} else {
const [nav] = performance.getEntriesByType("navigation");
console.log(`Frisch geladen, Typ: ${nav?.type}`);
}
});
// Wichtig · Fallstricke
- bfcache: Wird eine Seite aus dem Back/Forward-Cache wiederhergestellt, wird kein neuer Eintrag erzeugt –
typebehält den Wert der ursprünglichen Navigation. Zur Erkennungpageshowmitevent.persistedverwenden. - Soft-Navigationen in Single-Page-Apps (
history.pushState()) veränderntypenicht, da nur ein Eintrag pro Dokument existiert. - Der Wert
"prerender"ist neuer und wird nicht von allen Browsern gemeldet; bei vorgerenderten Seiten zusätzlichdocument.prerenderingbzw.activationStartprüfen. - Das veraltete
performance.navigation.type(Werte0–2,255) ist deprecated und sollte nicht mehr verwendet werden. - In Safari erst ab Version 15 verfügbar – vor dem Zugriff prüfen, ob
getEntriesByType("navigation")einen Eintrag liefert.