LargestContentfulPaint - 提供了加载页面时最大图像或文字绘画的详细信息

LargestContentfulPaint 是 Largest Contentful Paint API 的接口,提供了加载页面时最大图像或文字绘画的详细信息。在页面加载过程中,该绘画的时间是一个很重要的指标。

属性

LargestContentfulPaint.element

当前最大内容绘制的元素。

LargestContentfulPaint.renderTime

元素渲染到屏幕上的时间。如果元素是没有 Timing-Allow-Origin 标头加载的跨域图像,则可能不可用。

LargestContentfulPaint.loadTime

元素的加载时间。

LargestContentfulPaint.size

返回元素的固有大小(宽度 * 高度)。

LargestContentfulPaint.id

元素的 ID。没有 ID 时,此属性返回一个空字符串。

LargestContentfulPaint.url

如果元素是图像,则为图像的请求 URL。

方法

LargestContentfulPaint.toJSON()

将上述属性作为 JSON 返回。

实例

以下实例说明如何创建一个 PerformanceObserver,以侦听 largest-contentful-paint 条目并将 LCP 值记录到控制台。

这个实例还演示了如何包括缓冲条目(那些在调用 observer() 之前发生的条目),它通过将 buffered 选项设置为 true 来完成的。

请注意,在此实例中,仅当用户离开选项卡时才将数据发送到服务器。

// 捕获错误,因为某些浏览器在使用新的 `type` 选项时会抛出该错误。
// https://bugs.webkit.org/show_bug.cgi?id=209216
try {
  let lcp;

  const po = new PerformanceObserver((entryList) => {
    const entries = entryList.getEntries();
    const lastEntry = entries[entries.length - 1];

    // 使用 `renderTime` 或 `loadTime` 将 lcp 更新为最新值。
    //(注意:如果没有 `Timing-Allow-Origin` 标头,
    // 则 `renderTime` 在跨域加载的图像元素上可能不可用。)
    lcp = lastEntry.renderTime || lastEntry.loadTime;
  });

  po.observe({type: 'largest-contentful-paint', buffered: true});

  // 将数据发送到服务器。
  addEventListener('visibilitychange', function fn() {
    if (lcp && document.visibilityState === 'hidden') {
      console.log('LCP:', lcp);
      removeEventListener('visibilitychange', fn, true);
    }
  }, true);
} catch (e) {
  // 如果浏览器不支持此 API,则什么也不做。
}

规范

规范 状态 备注
Largest Contentful Paint
LargestContentfulPaint 的定义
编者的草案 初始定义。

桌面浏览器兼容性

暂无兼容数据