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 Informationen zur Rendering-Zeit für Bild- und Textknotenelemente, die der Entwickler zur Beobachtung mit einem elementtiming Attribut 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 Timing-Informationen für die folgenden Elemente:
<img>Elemente,<image>Elemente innerhalb eines<svg>,- poster Bilder von
<video>Elementen, - Elemente, die eine inhaltliche
background-imageEigenschaft mit einem URL-Wert für eine Ressource haben, die tatsächlich verfügbar ist, und - Gruppen von Textknoten, wie beispielsweise ein
<p>.
Der Autor kennzeichnet ein Element zur Beobachtung, indem er das elementtiming Attribut auf das Element setzt.
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 wir Informationen zurückgeben. PerformanceElementTiming.idSchreibgeschützt Experimentell-
Ein String, der die
iddes Elements ist. PerformanceElementTiming.identifierSchreibgeschützt Experimentell-
Ein String, der den Wert des
elementtimingAttributs auf dem Element darstellt. PerformanceElementTiming.intersectionRectSchreibgeschützt Experimentell-
Ein
DOMRectReadOnly, das das Rechteck des Elements innerhalb des Viewports 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 dies 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 dies auf ein Bild angewendet wird, 0 für Text.
PerformanceElementTiming.paintTimeExperimentell-
Gibt den
timestampzurück, als die Rendering-Phase endete und die Mal-Phase begann. PerformanceElementTiming.presentationTimeExperimentell-
Gibt den
timestampzurück, als das Element tatsächlich auf dem Bildschirm gezeichnet wurde. PerformanceElementTiming.renderTimeSchreibgeschützt Experimentell-
Ein
DOMHighResTimeStampmit der Rendering-Zeit des Elements. PerformanceElementTiming.urlSchreibgeschützt Experimentell-
Ein String, der die ursprüngliche URL der Ressourcenanfrage für Bilder ist, 0 für Text.
Es erweitert auch die folgenden PerformanceEntry Eigenschaften, qualifiziert und beschränkt sie wie beschrieben:
PerformanceEntry.durationSchreibgeschützt Experimentell-
Gibt immer
0zurück, dadurationauf dieses Interface nicht zutrifft. 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
renderTimedieses Eintrags zurück, wenn er nicht0ist, andernfalls den Wert vonloadTimedieses Eintrags.
Instanz-Methoden
PerformanceElementTiming.toJSON()Experimentell-
Gibt eine JSON-Darstellung des
PerformanceElementTimingObjekts zurück.
Beispiele
>Beobachtung der Rendering-Zeit von spezifischen Elementen
In diesem Beispiel werden zwei Elemente beobachtet, indem das elementtiming Attribut hinzugefügt wird. Ein PerformanceObserver wird registriert, um alle Leistungseinträge des Typs "element" zu erhalten, und das buffered Flag wird verwendet, um auf Daten vor der Erstellung des Beobachters 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 in die Konsole ausgegeben. Der erste enthält Details zum Bild, der zweite Details zum Textknoten.
Beobachtung separater Mal- und Präsentationszeiten
Die Eigenschaften paintTime und presentationTime ermöglichen es Ihnen, spezifische Timing-Werte für den Beginn der Malphase und das Zeichnen des Elements auf dem Bildschirm abzurufen. Die paintTime ist weitgehend interoperabel, während die presentationTime von der Implementierung abhängt.
Dieses Beispiel nutzt einen PerformanceObserver, um alle Leistungseinträge des Typs "element" zu beobachten (denken Sie daran, dass Elemente elementtiming Attribute haben müssen, um beobachtet zu werden). Wir überprüfen die Unterstützung für paintTime und presentationTime und rufen diese Werte ab, wenn sie verfügbar sind. In nicht unterstützenden Browsern ruft der Code die renderTime oder loadTime ab, je nach dem, was unterstützt wird.
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