Signatur
Beschreibung
Die Eigenschaft redirectCount des Objekts performance.navigation liefert die Anzahl der Weiterleitungen (HTTP 3xx), die der Browser seit der letzten Navigation ohne Weiterleitung durchlaufen hat, bevor er beim aktuellen Dokument angekommen ist. Gab es keine Weiterleitung, ist der Wert 0.
Gezählt werden nur Weiterleitungen innerhalb desselben Ursprungs (same-origin). Sobald in der Kette eine Weiterleitung über einen fremden Ursprung ohne passende Freigabe per Timing-Allow-Origin liegt, meldet der Browser aus Datenschutzgründen 0.
Die Eigenschaft gehört zur Spezifikation Navigation Timing Level 1 und gilt als veraltet. Neuer Code sollte stattdessen PerformanceNavigationTiming.redirectCount verwenden. Diesen Wert erhält man über performance.getEntriesByType("navigation")[0]. Nützlich ist die Information vor allem beim Monitoring echter Nutzerdaten (RUM): Überflüssige Weiterleitungen, etwa von http auf https oder von der Domain ohne auf die mit www, lassen sich so erkennen, denn jede davon verlängert die Ladezeit.
Rückgabewert
unsigned short, 0–65535) mit der Anzahl der Weiterleitungen vor dem aktuellen Dokument. Der Wert ist 0, wenn es keine Weiterleitung gab oder ein fremder Ursprung in der Kette lag.Beispiele
Anzahl der Weiterleitungen auslesen (veraltete API)
// Nur lesen: Die Eigenschaft ist schreibgeschützt
const count = performance.navigation.redirectCount;
console.log(`Weiterleitungen vor dieser Seite: ${count}`);
Moderne Variante mit Rückfall auf die alte API
const getRedirectCount = () => {
const [nav] = performance.getEntriesByType?.('navigation') ?? [];
if (nav && 'redirectCount' in nav) {
return nav.redirectCount; // PerformanceNavigationTiming
}
// Rückfall für sehr alte Browser
return performance.navigation?.redirectCount ?? null;
};
console.log('redirectCount:', getRedirectCount());
Weiterleitungen fürs Monitoring melden
window.addEventListener('load', () => {
const [nav] = performance.getEntriesByType('navigation');
const redirects = nav ? nav.redirectCount : performance.navigation.redirectCount;
if (redirects > 0) {
const redirectTime = nav ? Math.round(nav.redirectEnd - nav.redirectStart) : null;
navigator.sendBeacon('/rum', JSON.stringify({
page: location.pathname,
redirects,
redirectTime // Millisekunden, falls verfügbar
}));
console.warn(`${redirects} Weiterleitung(en) erkannt – bitte Links prüfen.`);
}
});
// Wichtig · Fallstricke
- Veraltet:
performance.navigationund damitredirectCountsollen aus den Browsern verschwinden. VerwendePerformanceNavigationTiming.redirectCount(Navigation Timing Level 2). - Fremde Ursprünge: Liegt in der Weiterleitungskette ein anderer Ursprung, ist der Wert
0. Das heißt also nicht zwingend, dass keine Weiterleitung stattgefunden hat. - Schreibgeschützt: Eine Zuweisung wird stillschweigend ignoriert, im Strict Mode führt sie zu einem
TypeError. - Clientseitige Weiterleitungen per
location.hrefoder<meta http-equiv="refresh">werden nicht mitgezählt, weil es sich um neue Navigationen handelt. - Kompatibilität: In Chrome, Firefox, Safari und Edge weiterhin vorhanden, in Web Workern aber nicht verfügbar. Prüfe die Verfügbarkeit per Feature-Detection (
performance.navigation?.redirectCount).