PerformanceElementTiming
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Want more browser support for this feature? Tell us why.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Die Schnittstelle PerformanceElementTiming enthält Informationen zum Rendering-Zeitpunkt von Bild- und Textknotenelementen, die Entwickler mit dem Attribut elementtiming zur Beobachtung gekennzeichnet haben.
Beschreibung
Die Element Timing API soll Webentwicklern und Analysetools ermöglichen, die Rendering-Zeitpunkte wichtiger Elemente auf einer Seite zu messen.
Die API unterstützt Zeitinformationen für folgende Elemente:
<img>-Elemente,<image>-Elemente innerhalb eines<svg>,- Posterbilder von
<video>-Elementen, - Elemente mit einer inhaltsrelevanten
background-image-Eigenschaft, deren URL-Wert auf eine tatsächlich verfügbare Ressource verweist, und - Gruppen von Textknoten, etwa ein
<p>.
Zur Beobachtung kennzeichnen Sie ein Element, indem Sie ihm das Attribut elementtiming hinzufügen.
PerformanceElementTiming erbt von PerformanceEntry.
Instanzeigenschaften
Diese Schnittstelle definiert direkt die folgenden Eigenschaften:
PerformanceElementTiming.elementSchreibgeschützt-
Ein
Element, das das Element darstellt, über das Informationen zurückgegeben werden. PerformanceElementTiming.idSchreibgeschützt-
Eine Zeichenfolge mit der
iddes Elements. PerformanceElementTiming.identifierSchreibgeschützt-
Eine Zeichenfolge mit dem Wert des Attributs
elementtimingdes Elements. PerformanceElementTiming.intersectionRectSchreibgeschützt-
Ein
DOMRectReadOnly, das das Rechteck des Elements innerhalb des Viewports beschreibt. PerformanceElementTiming.loadTimeSchreibgeschützt-
Ein
DOMHighResTimeStampmit demloadTime-Wert des Elements. PerformanceElementTiming.naturalHeightSchreibgeschützt-
Eine vorzeichenlose 32-Bit-Ganzzahl (unsigned long), die bei einem Bild dessen intrinsische Höhe angibt; bei Text ist der Wert
0. PerformanceElementTiming.naturalWidthSchreibgeschützt-
Eine vorzeichenlose 32-Bit-Ganzzahl (unsigned long), die bei einem Bild dessen intrinsische Breite angibt; bei Text ist der Wert
0. PerformanceElementTiming.paintTime-
Gibt den
timestampzurück, zu dem die Rendering-Phase endete und die Paint-Phase begann. PerformanceElementTiming.presentationTime-
Gibt den
timestampzurück, zu dem das Element tatsächlich auf dem Bildschirm gezeichnet wurde. PerformanceElementTiming.renderTimeSchreibgeschützt-
Ein
DOMHighResTimeStampmit demrenderTime-Wert des Elements. PerformanceElementTiming.urlSchreibgeschützt-
Eine Zeichenfolge mit der ursprünglichen URL der Ressourcenanforderung für Bilder; bei Text ist der Wert
0.
Die Schnittstelle erweitert außerdem die folgenden Eigenschaften von PerformanceEntry und konkretisiert beziehungsweise beschränkt sie wie beschrieben:
PerformanceEntry.durationSchreibgeschützt-
Gibt immer
0zurück, dadurationfür diese Schnittstelle nicht anwendbar ist. PerformanceEntry.entryTypeSchreibgeschützt-
Gibt immer
"element"zurück. PerformanceEntry.nameSchreibgeschützt-
Gibt für Bilder
"image-paint"und für Text"text-paint"zurück. PerformanceEntry.startTimeSchreibgeschützt-
Gibt den Wert von
renderTimedieses Eintrags zurück, sofern er nicht0ist; andernfalls den Wert vonloadTimedieses Eintrags.
Instanzmethoden
PerformanceElementTiming.toJSON()-
Gibt ein als JSON serialisierbares einfaches Objekt zurück, das das
PerformanceElementTiming-Objekt darstellt. Die Methode wird vonJSON.stringify()automatisch aufgerufen.
Beispiele
>Rendering-Zeit bestimmter Elemente beobachten
In diesem Beispiel werden zwei Elemente beobachtet, indem ihnen das Attribut elementtiming hinzugefügt wird. Ein PerformanceObserver wird registriert, um alle Performance-Einträge des Typs "element" zu erhalten. Das Flag buffered ermöglicht den Zugriff auf Daten aus der Zeit vor der Erstellung des Observers.
<img src="image.jpg" elementtiming="big-image" />
<p elementtiming="text" id="text-id">text here</p>
const observer = new PerformanceObserver((list) => {
list.getEntries().forEach((entry) => {
console.log(entry);
});
});
observer.observe({ type: "element", buffered: true });
Auf der Konsole werden zwei Einträge ausgegeben: Der erste enthält Details zum Bild, der zweite Details zum Textknoten.
Zeitpunkte für Paint und Darstellung getrennt beobachten
Mit den Eigenschaften paintTime und presentationTime können Sie die Zeitpunkte für den Beginn der Paint-Phase und für die Darstellung des Elements auf dem Bildschirm getrennt abrufen. paintTime ist weitgehend interoperabel, während presentationTime von der Implementierung abhängt.
In diesem Beispiel beobachtet ein PerformanceObserver alle Performance-Einträge des Typs "element". Beachten Sie, dass für beobachtete Elemente das Attribut elementtiming gesetzt sein muss. Der Code prüft, ob paintTime und presentationTime unterstützt werden, und ruft die Werte gegebenenfalls ab. In Browsern, die diese Eigenschaften nicht unterstützen, ruft er je nach Unterstützung renderTime oder loadTime ab.
const observer = new PerformanceObserver((list) => {
const entries = list.getEntries();
entries.forEach((entry) => {
if (entry.presentationTime) {
console.log(
"Element paintTime:",
entry.paintTime,
"Element presentationTime:",
entry.presentationTime,
);
} else if (entry.paintTime) {
console.log("Element paintTime:", entry.paintTime);
} else if (entry.renderTime) {
console.log("Element renderTime:", entry.renderTime);
} else {
console.log("Element loadTime", entry.loadTime);
}
});
});
observer.observe({ type: "element", buffered: true });
Spezifikationen
| Spezifikation |
|---|
| Element Timing API> # sec-performance-element-timing> |
Browser-Kompatibilität
Siehe auch
- HTML-Attribut
elementtiming