Start · Sprachen · JavaScript · Referenz · PerformanceTimingConfidence.toJSON()

PerformanceTimingConfidence.toJSON()

Methode

Gibt ein einfaches Objekt mit den Eigenschaften <code>value</code> und <code>randomizedTriggerRate</code> des <code>PerformanceTimingConfidence</code>-Objekts zurück, das sich als JSON speichern lässt.

seit JavaScript Experimentell: bisher nur Chromium-basierte Browse Kategorie: webapi

Signatur

PerformanceTimingConfidence.prototype.toJSON()

Beschreibung

Die Methode toJSON() gehört zum Interface PerformanceTimingConfidence und wandelt das Objekt in eine JSON-Darstellung um. Man erreicht das Objekt über die Eigenschaft PerformanceNavigationTiming.confidence. Es gibt an, wie verlässlich die Zeitmessungen einer Navigation sind. Ein Beispiel: Wenn der Browser beim Start einer Seite ausgelastet war (Kaltstart, viele offene Tabs), sind die gemessenen Zeiten oft untypisch hoch.

Das zurückgegebene Objekt enthält alle serialisierbaren Eigenschaften des Interfaces:

  • value: die Einschätzung als Zeichenkette, "high" oder "low".
  • randomizedTriggerRate: eine Zahl zwischen 0 und 1. Sie gibt an, wie wahrscheinlich es ist, dass der Browser value absichtlich zufällig gesetzt hat. So wird verhindert, dass sich Nutzer über diesen Wert eindeutig wiedererkennen lassen.

Die Methode braucht man vor allem, wenn Leistungsdaten an einen Analyse-Server (Real User Monitoring) gesendet oder geloggt werden sollen. JSON.stringify() ruft toJSON() automatisch auf. Deshalb kann man das Objekt direkt an JSON.stringify() übergeben, ohne die Methode selbst aufzurufen.

Rückgabewert

Typ
Object
Beschreibung
Ein einfaches Objekt der Form { value: "high" | "low", randomizedTriggerRate: number }. Das Objekt ist keine Zeichenkette. Für einen JSON-String muss man zusätzlich JSON.stringify() aufrufen.

Beispiele

Verlässlichkeit der aktuellen Navigation auslesen

const [nav] = performance.getEntriesByType("navigation");

// Die Eigenschaft confidence gibt es nur in Browsern, die die Funktion unterstützen
if (nav?.confidence) {
  const data = nav.confidence.toJSON();
  console.log(data);
} else {
  console.log("PerformanceTimingConfidence wird nicht unterstützt");
}
{ randomizedTriggerRate: 0.1, value: "high" } // die Zahlen hängen vom Browser ab

JSON.stringify ruft toJSON() automatisch auf

const [nav] = performance.getEntriesByType("navigation");

if (nav?.confidence) {
  // Ein eigener Aufruf von toJSON() ist nicht nötig
  console.log(JSON.stringify(nav.confidence));
}
{"randomizedTriggerRate":0.1,"value":"high"}

RUM-Daten mit Verlässlichkeit an einen Server senden

const reportNavigation = () => {
  const [nav] = performance.getEntriesByType("navigation");
  if (!nav) return;

  const payload = {
    url: location.pathname,
    loadTime: Math.round(nav.loadEventEnd - nav.startTime),
    confidence: nav.confidence?.toJSON() ?? null,
  };

  navigator.sendBeacon("/analytics/nav", JSON.stringify(payload));
};

addEventListener("pagehide", reportNavigation, { once: true });

// Wichtig · Fallstricke

Experimentelle Funktion: PerformanceTimingConfidence und PerformanceNavigationTiming.confidence gibt es bisher nur in neueren Chromium-Browsern (Chrome, Edge). Firefox und Safari unterstützen sie nicht. Prüfen Sie vor dem Zugriff immer, ob die Funktion vorhanden ist, z. B. mit nav.confidence?.toJSON().

Absichtlich zufällige Werte: Zum Schutz der Privatsphäre setzt der Browser value in einem Teil der Fälle zufällig. Ein einzelner Messwert sagt deshalb wenig aus. Werten Sie die Daten nur gesammelt aus und rechnen Sie das Zufallsrauschen mit Hilfe von randomizedTriggerRate heraus. Schließen Sie Messungen mit "low" nicht einfach ungeprüft aus.

Rückgabetyp: toJSON() gibt ein Objekt zurück, keinen String. Für den Versand per fetch oder sendBeacon brauchen Sie weiterhin JSON.stringify().