PerformanceNavigationTiming: Methode toJSON()
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Oktober 2021 browserübergreifend verfügbar.
Die Methode toJSON() der Schnittstelle PerformanceNavigationTiming gibt ein JSON-serialisierbares einfaches Objekt zurück, das das PerformanceNavigationTiming-Objekt repräsentiert.
Die Methode wird von JSON.stringify() automatisch aufgerufen, wenn bei der JSON-Serialisierung ein PerformanceNavigationTiming-Objekt gefunden wird.
Syntax
toJSON()
Parameter
Keine.
Rückgabewert
Ein JSON-serialisierbares einfaches Objekt mit den folgenden Eigenschaften:
nameentryTypestartTimedurationnavigationIdinitiatorTypedeliveryTypenextHopProtocolrenderBlockingStatuscontentTypecontentEncodingworkerStartredirectStartredirectEndfetchStartdomainLookupStartdomainLookupEndconnectStartsecureConnectionStartconnectEndrequestStartresponseStartfirstInterimResponseStartfinalResponseHeadersStartresponseEndworkerRouterEvaluationStartworkerCacheLookupStartworkerMatchedRouterSourceworkerFinalRouterSourcetransferSizeencodedBodySizedecodedBodySizeresponseStatusserverTimingunloadEventStartunloadEventEnddomInteractivedomContentLoadedEventStartdomContentLoadedEventEnddomCompleteloadEventStartloadEventEndtyperedirectCountactivationStartcriticalCHRestartnotRestoredReasonsconfidence
Der Wert jeder Eigenschaft wird unverändert übernommen. Wenn das zurückgegebene Objekt an JSON.stringify() übergeben wird, werden die Objekte im Array serverTiming sowie die Eigenschaften notRestoredReasons und confidence zusätzlich mit PerformanceServerTiming.toJSON(), NotRestoredReasons.toJSON() beziehungsweise PerformanceTimingConfidence.toJSON() serialisiert, sofern sie nicht null sind.
Beispiele
>toJSON() direkt aufrufen
Dieses Beispiel ruft ein PerformanceNavigationTiming-Objekt ab. Ein direkter Aufruf von toJSON() gibt ein einfaches Objekt zurück. Seine Eigenschaften haben dieselben Werte wie die entsprechenden Eigenschaften des ursprünglichen Objekts.
const observer = new PerformanceObserver((list) => {
list.getEntries().forEach((entry) => {
const json = entry.toJSON();
console.log(json); // A plain object
console.log(typeof json); // "object"
console.log(json.type); // Same value as entry.type
});
});
observer.observe({ entryTypes: ["navigation"] });
In einen JSON-String serialisieren
Innerhalb der Callback-Funktion aus dem vorherigen Beispiel kann dasselbe Objekt mit JSON.stringify() serialisiert werden. Dabei wird die Methode toJSON() automatisch aufgerufen.
console.log(JSON.stringify(entry));
Dadurch würde ein JSON-String wie der folgende protokolliert (zur besseren Lesbarkeit formatiert):
{
"name": "https://en.wikipedia.org/wiki/Main_Page",
"entryType": "navigation",
"startTime": 0,
"duration": 228.25,
"navigationId": 2463,
"initiatorType": "navigation",
"deliveryType": "",
"nextHopProtocol": "h2",
"renderBlockingStatus": "blocking",
"contentType": "text/html",
"contentEncoding": "gzip",
"workerStart": 0,
"redirectStart": 4.25,
"redirectEnd": 71.25,
"fetchStart": 71.25,
"domainLookupStart": 71.25,
"domainLookupEnd": 71.25,
"connectStart": 71.25,
"secureConnectionStart": 71.25,
"connectEnd": 71.25,
"requestStart": 74.25,
"responseStart": 103.25,
"firstInterimResponseStart": 0,
"finalResponseHeadersStart": 103.25,
"responseEnd": 105.25,
"transferSize": 19464,
"encodedBodySize": 19164,
"decodedBodySize": 83352,
"responseStatus": 200,
"serverTiming": [
{
"name": "cache",
"duration": 0.25,
"description": "hit-front"
},
{
"name": "host",
"duration": 0.5,
"description": "cp3062"
}
],
"unloadEventStart": 0,
"unloadEventEnd": 0,
"domInteractive": 178.25,
"domContentLoadedEventStart": 179.25,
"domContentLoadedEventEnd": 179.25,
"domComplete": 228.25,
"loadEventStart": 228.25,
"loadEventEnd": 228.25,
"type": "navigate",
"redirectCount": 1,
"activationStart": 0,
"criticalCHRestart": 0,
"notRestoredReasons": null,
"confidence": {
"randomizedTriggerRate": 0.4994798,
"value": "high"
}
}
Spezifikationen
| Spezifikation |
|---|
| Navigation Timing Level 2> # dom-performancenavigationtiming-tojson> |