PerformanceElementTiming
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Das PerformanceElementTiming-Interface enthält Render-Zeitinformationen für Bild- und Textknoten-Elemente, die der Entwickler mit einem elementtiming-Attribut zur Beobachtung versehen hat.
Beschreibung
Das Ziel der Element Timing API ist es, Webentwicklern oder Analysetools die Möglichkeit zu geben, Rendering-Zeitstempel von kritischen Elementen auf einer Seite zu messen.
Die API unterstützt Zeitinformationen für folgende Elemente:
<img>-Elemente,<image>-Elemente innerhalb eines<svg>,- poster-Bilder von
<video>-Elementen, - Elemente, die eine inhaltsreiche
background-image-Eigenschaft mit einem URL-Wert für eine tatsächlich verfügbare Ressource haben, und - Gruppen von Textknoten, wie ein
<p>.
Der Autor markiert ein Element zur Beobachtung, indem er das elementtiming-Attribut am Element hinzufügt.
PerformanceElementTiming erbt von PerformanceEntry.
Instanz-Eigenschaften
Dieses Interface definiert direkt die folgenden Eigenschaften:
PerformanceElementTiming.elementSchreibgeschützt Experimentell-
Ein
Element, das das Element repräsentiert, über das Informationen zurückgegeben werden. PerformanceElementTiming.idSchreibgeschützt Experimentell-
Ein String, der die
iddes Elements ist. PerformanceElementTiming.identifierSchreibgeschützt Experimentell-
Ein String, der den Wert des
elementtiming-Attributs am Element darstellt. PerformanceElementTiming.intersectionRectSchreibgeschützt Experimentell-
Ein
DOMRectReadOnly, das das Rechteck des Elements im Ansichtsbereich ist. PerformanceElementTiming.loadTimeSchreibgeschützt Experimentell-
Ein
DOMHighResTimeStampmit der Ladezeit des Elements. PerformanceElementTiming.naturalHeightSchreibgeschützt Experimentell-
Ein vorzeichenloser 32-Bit-Integer (unsigned long), der die intrinsische Höhe des Bildes ist, wenn es auf ein Bild angewendet wird, 0 für Text.
PerformanceElementTiming.naturalWidthSchreibgeschützt Experimentell-
Ein vorzeichenloser 32-Bit-Integer (unsigned long), der die intrinsische Breite des Bildes ist, wenn es auf ein Bild angewendet wird, 0 für Text.
PerformanceElementTiming.paintTime-
Gibt den
timestampzurück, als die Rendering-Phase endete und die Malphase begann. PerformanceElementTiming.presentationTime-
Gibt den
timestampzurück, als das Element tatsächlich auf dem Bildschirm gezeichnet wurde. PerformanceElementTiming.renderTimeSchreibgeschützt Experimentell-
Ein
DOMHighResTimeStampmit der Renderzeit des Elements. PerformanceElementTiming.urlSchreibgeschützt Experimentell-
Ein String, der die initiale URL der Ressourcenanfrage für Bilder ist, 0 für Text.
Es erweitert auch die folgenden PerformanceEntry-Eigenschaften, indem es diese qualifiziert und einschränkt, wie beschrieben:
PerformanceEntry.durationSchreibgeschützt Experimentell-
Gibt immer
0zurück, dadurationauf dieses Interface nicht anwendbar ist. PerformanceEntry.entryTypeSchreibgeschützt Experimentell-
Gibt immer
"element"zurück. PerformanceEntry.nameSchreibgeschützt Experimentell-
Gibt
"image-paint"für Bilder und"text-paint"für Text zurück. PerformanceEntry.startTimeSchreibgeschützt Experimentell-
Gibt den Wert von
renderTimedieser Eintragung zurück, wenn er nicht0ist, andernfalls den Wert vonloadTimedieser Eintragung.
Instanz-Methoden
PerformanceElementTiming.toJSON()Experimentell-
Gibt eine JSON-Darstellung des
PerformanceElementTiming-Objekts zurück.
Beispiele
>Beobachten der Renderzeit spezifischer Elemente
In diesem Beispiel werden zwei Elemente durch Hinzufügen des elementtiming-Attributs beobachtet. Ein PerformanceObserver wird registriert, um alle Performance-Einträge vom Typ "element" zu erhalten, und das buffered-Flag wird verwendet, um auf Daten von vor der Erzeugung des Observers zuzugreifen.
<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 });
Zwei Einträge werden an die Konsole ausgegeben. Der erste enthält Details zu dem Bild, der zweite Details zum Textknoten.
Beobachtung separater Mal- und Präsentationszeiten
Die Eigenschaften paintTime und presentationTime ermöglichen es Ihnen, spezifische Zeiten für den Beginn der Malphase und das Zeichnen des Elements auf dem Bildschirm zu ermitteln. Die paintTime ist weitgehend interoperabel, während die presentationTime implementierungsabhängig ist.
Dieses Beispiel verwendet einen PerformanceObserver, um alle Performance-Einträge vom Typ "element" zu beobachten (denken Sie daran, dass Elemente, um beobachtet zu werden, elementtiming-Attribute gesetzt haben müssen). Wir prüfen die Unterstützung von paintTime und presentationTime und ermitteln diese Werte, wenn sie verfügbar sind. In Browsern, die dies nicht unterstützen, ruft der Code je nach Unterstützung die 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
elementtimingHTML-Attribut