PerformanceElementTiming: renderTime 属性

实验性: 这是一个 实验性技术
在生产环境中使用此功能之前,请仔细查看 浏览器兼容性表

renderTimePerformanceElementTiming 接口的只读属性,它返回关联元素的渲染时间。

一个表示元素渲染时间的 DOMHighResTimeStamp

对于图像,这将是图像渲染时间戳。它定义为图像完全加载后发生的下一个绘制操作。如果时间允许检查失败(如 Timing-allow-origin 标头所定义),则此属性将返回 0

对于文本节点,这将是文本渲染时间戳。它定义为元素文本绘制完成的时间。

示例

记录 renderTime

在此示例中,一个 <img> 元素通过添加 elementtiming 属性进行观察。注册了一个 PerformanceObserver 来获取所有类型为 "element" 的性能条目,并且使用 buffered 标志访问观察器创建之前的日期。调用 entry.renderTime 返回图像元素的渲染时间。

html
<img
  src="image.jpg"
  alt="a nice image"
  elementtiming="big-image"
  id="myImage" />
js
const observer = new PerformanceObserver((list) => {
  list.getEntries().forEach((entry) => {
    if (entry.identifier === "big-image") {
      console.log(entry.renderTime);
    }
  });
});
observer.observe({ type: "element", buffered: true });

跨源图像渲染时间

出于安全原因,如果资源是跨源请求,则 renderTime 属性的值为 0。要公开跨源渲染时间信息,需要设置 Timing-Allow-Origin HTTP 响应标头。

例如,要允许 https://mdn.org.cn 查看 renderTime,跨源资源应发送

http
Timing-Allow-Origin: https://mdn.org.cn

或者,您可以使用 startTime,如果它不为 0,则返回条目的 renderTime 值,否则返回此条目的 loadTime 值。但是,建议设置 Timing-Allow-Origin 标头,以便度量指标更准确。

如果使用 startTime,可以通过检查是否使用了 renderTime 来标记任何不准确之处

js
const isRenderTime = entry.renderTime ? true : false;

规范

规范
元素定时 API
# ref-for-dom-performanceelementtiming-rendertime①

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。