VisibilityStateEntry

Khả dụng hạn chế

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 VisibilityStateEntry cung cấp thời gian của các thay đổi trạng thái hiển thị trang, tức là khi tab chuyển từ foreground sang background hoặc ngược lại.

Điều này có thể được dùng để xác định các thay đổi hiển thị trên performance timeline, và tham chiếu chéo chúng với các mục performance khác như "first-contentful-paint" (xem PerformancePaintTiming).

Có hai thời gian thay đổi trạng thái hiển thị quan trọng mà API này báo cáo:

  • visible: Thời gian khi trang trở nên hiển thị (tức là khi tab của nó chuyển sang foreground).
  • hidden: Thời gian khi trang trở nên bị ẩn (tức là khi tab của nó chuyển sang background).

Performance timeline sẽ luôn có một mục "visibility-state" với startTime0name đại diện cho trạng thái hiển thị trang ban đầu.

Note: Giống như các Performance API khác, API này mở rộng PerformanceEntry.

PerformanceEntry VisibilityStateEntry

Thuộc tính phiên bản

Giao diện này không có thuộc tính riêng nhưng mở rộng các thuộc tính của PerformanceEntry bằng cách giới hạn và ràng buộc chúng như sau:

PerformanceEntry.entryType Thử nghiệm

Trả về "visibility-state".

PerformanceEntry.name Thử nghiệm

Trả về "visible" hoặc "hidden".

PerformanceEntry.startTime Thử nghiệm

Trả về timestamp khi thay đổi trạng thái hiển thị xảy ra.

PerformanceEntry.duration Thử nghiệm

Trả về 0.

Phương thức phiên bản

Giao diện này không có phương thức.

Ví dụ

Cách dùng cơ bản

Hàm sau có thể được dùng để ghi log bảng tất cả các mục performance "visibility-state" vào console:

js
function getVisibilityStateEntries() {
  const visibilityStateEntries =
    performance.getEntriesByType("visibility-state");
  console.table(visibilityStateEntries);
}

Tương quan các thay đổi trạng thái hiển thị với paint timing

Hàm bên dưới lấy tham chiếu đến tất cả các mục "visibility-state" và mục "first-contentful-paint", sau đó dùng Array.some() để kiểm tra xem có mục hiển thị "hidden" nào xảy ra trước lần paint contentful đầu tiên hay không:

js
function wasHiddenBeforeFirstContentfulPaint() {
  const fcpEntry = performance.getEntriesByName("first-contentful-paint")[0];
  const visibilityStateEntries =
    performance.getEntriesByType("visibility-state");
  return visibilityStateEntries.some(
    (e) => e.startTime < fcpEntry.startTime && e.name === "hidden",
  );
}

Thông số kỹ thuật

Thông số kỹ thuật
HTML
# the-visibilitystateentry-interface

Tương thích trình duyệt

Xem thêm

Page Visibility API