PerformanceElementTiming
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
Giao diện PerformanceElementTiming chứa thông tin thời gian render cho các phần tử hình ảnh và nút văn bản mà nhà phát triển đã chú thích bằng thuộc tính elementtiming để quan sát.
Mô tả
Mục tiêu của Element Timing API là cung cấp cho các nhà phát triển web hoặc các công cụ phân tích khả năng đo các dấu thời gian render của các phần tử quan trọng trên một trang.
API hỗ trợ thông tin thời gian trên các phần tử sau:
- Các phần tử
<img>, - Các phần tử
<image>bên trong<svg>, - Hình ảnh poster của các phần tử
<video>, - Các phần tử có thuộc tính
background-imagechứa nội dung với giá trị URL cho tài nguyên thực sự có sẵn, và - Các nhóm nút văn bản, chẳng hạn như
<p>.
Tác giả đánh dấu một phần tử để quan sát bằng cách thêm thuộc tính elementtiming trên phần tử đó.
PerformanceElementTiming kế thừa từ PerformanceEntry.
Thuộc tính phiên bản
Giao diện này trực tiếp định nghĩa các thuộc tính sau:
PerformanceElementTiming.elementRead only Experimental-
Một
Elementđại diện cho phần tử mà chúng ta đang trả về thông tin. PerformanceElementTiming.idRead only Experimental-
Một chuỗi là
idcủa phần tử. PerformanceElementTiming.identifierRead only Experimental-
Một chuỗi là giá trị của thuộc tính
elementtimingtrên phần tử. PerformanceElementTiming.intersectionRectRead only Experimental-
Một
DOMRectReadOnlylà hình chữ nhật của phần tử trong viewport. PerformanceElementTiming.loadTimeRead only Experimental-
Một
DOMHighResTimeStampvới loadTime của phần tử. PerformanceElementTiming.naturalHeightRead only Experimental-
Một số nguyên không dấu 32-bit (unsigned long) là chiều cao nội tại của hình ảnh nếu áp dụng cho hình ảnh, 0 cho văn bản.
PerformanceElementTiming.naturalWidthRead only Experimental-
Một số nguyên không dấu 32-bit (unsigned long) là chiều rộng nội tại của hình ảnh nếu áp dụng cho hình ảnh, 0 cho văn bản.
PerformanceElementTiming.paintTime-
Trả về
dấu thời giankhi giai đoạn render kết thúc và giai đoạn vẽ bắt đầu. PerformanceElementTiming.presentationTime-
Trả về
dấu thời giankhi phần tử thực sự được vẽ trên màn hình. PerformanceElementTiming.renderTimeRead only Experimental-
Một
DOMHighResTimeStampvới renderTime của phần tử. PerformanceElementTiming.urlRead only Experimental-
Một chuỗi là URL ban đầu của yêu cầu tài nguyên cho hình ảnh, 0 cho văn bản.
Giao diện này cũng mở rộng các thuộc tính PerformanceEntry sau, với các điều kiện và hạn chế như được mô tả:
PerformanceEntry.durationRead only Experimental-
Luôn trả về
0vìdurationkhông áp dụng cho giao diện này. PerformanceEntry.entryTypeRead only Experimental-
Luôn trả về
"element". PerformanceEntry.nameRead only Experimental-
Trả về
"image-paint"cho hình ảnh và"text-paint"cho văn bản. PerformanceEntry.startTimeRead only Experimental-
Trả về giá trị
renderTimecủa mục này nếu nó không phải0, nếu không trả về giá trịloadTimecủa mục này.
Phương thức phiên bản
PerformanceElementTiming.toJSON()Experimental-
Trả về biểu diễn JSON của đối tượng
PerformanceElementTiming.
Ví dụ
>Quan sát thời gian render của các phần tử cụ thể
Trong ví dụ này, hai phần tử đang được quan sát bằng cách thêm thuộc tính elementtiming. Một PerformanceObserver được đăng ký để lấy tất cả các mục hiệu suất loại "element" và cờ buffered được dùng để truy cập dữ liệu từ trước khi trình quan sát được tạo.
<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 });
Hai mục sẽ được xuất ra console. Mục đầu tiên chứa thông tin chi tiết về hình ảnh, mục thứ hai chứa thông tin chi tiết về nút văn bản.
Quan sát thời gian vẽ và trình bày riêng biệt
Các thuộc tính paintTime và presentationTime cho phép bạn truy xuất các thời gian cụ thể cho thời điểm giai đoạn vẽ bắt đầu và phần tử được vẽ trên màn hình. paintTime có tính tương thích rộng rãi, trong khi presentationTime phụ thuộc vào từng triển khai cụ thể.
Ví dụ này sử dụng PerformanceObserver để quan sát tất cả các mục hiệu suất loại "element" (nhớ rằng, để được quan sát, các phần tử cần có thuộc tính elementtiming được đặt trên chúng). Chúng ta kiểm tra hỗ trợ paintTime và presentationTime và truy xuất các giá trị đó nếu có. Trong các trình duyệt không hỗ trợ, mã sẽ truy xuất renderTime hoặc loadTime, tùy thuộc vào cái nào được hỗ trợ.
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 });
Thông số kỹ thuật
| Specification |
|---|
| Element Timing API> # sec-performance-element-timing> |
Tương thích trình duyệt
Xem thêm
- Thuộc tính HTML
elementtiming