Start · Sprachen · JavaScript · Referenz · PerformanceNavigation.redirectCount

PerformanceNavigation.redirectCount

Eigenschaft

Veraltete, schreibgeschützte Eigenschaft, die angibt, wie viele Weiterleitungen vor dem Laden des aktuellen Dokuments erfolgt sind (<code>unsigned short</code>).

seit JavaScript Veraltet (Navigation Timing Level 1) – in allen gä deprecated seit ja Kategorie: webapi

Signatur

PerformanceNavigation.redirectCount

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

Typ
number
Beschreibung
Ganzzahl (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}`);
Weiterleitungen vor dieser Seite: 0

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());
redirectCount: 1

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.`);
  }
});
2 Weiterleitung(en) erkannt – bitte Links prüfen.

// Wichtig · Fallstricke

  • Veraltet: performance.navigation und damit redirectCount sollen aus den Browsern verschwinden. Verwende PerformanceNavigationTiming.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.href oder <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).