弃用的domLoading已删除!用什么代替呢?

时间:2019-04-27 10:14:39

标签: javascript performance performance-testing navigation-timing-api

domLoading时间代表浏览器处理文档的最开始

enter image description here

但是domLoading属性已从Timing API:performance.getEntriesByType("navigation")[0].domLoading == undefined

中删除

found的动机来自2015年9月17日:

domLoading属性已被弃用,在本规范的将来版本中可能会删除。由于在现有用户代理中创建Document对象的时间不同,因此domLoading返回的值是特定于实现的,因此不应在有意义的指标中使用

MDN都没有告诉您使用什么。我没有发现关于此的任何问题,这很奇怪。我可以看到,responseEnd和domInteractive是时间上最接近的属性,但是它们相差太大。

如果没有此属性可用于处理文档,我不知道文档成为interactive,获取content loaded或到达complete所需的时间。

是否有任何正确的参考文献可以用来衡量和比较,我错过了或可以代替

var nt = performance.getEntriesByType("navigation")[0],
    /* domLoading = nt.domLoading; <<< Error: undefined */
    domLoading = nt.responseEnd; //Not correct? Hopefully same.

console.log("Dom parsed in " + (nt.domInteractive - domLoading) + " ms")

console.log("Dom ready in " + (nt.domContentLoadedEventStart - domLoading) + " ms")

console.log("Dom complete in " + (nt.domComplete - domLoading) + " ms")

我在w3c.github.io上发现了这个新的时间表,表明没有可测量的dom起点。

Navigation Timing level 2

2 个答案:

答案 0 :(得分:0)

不是。使用 User Time API 来测量动态加载的JS文件。
Resource Time API用于没有处理的CSS或IMG之类的资源。

这些图适合导航定时(网页)。
这是类似于导航但没有处理部分的资源图。
没有要加载的dom-没有domLoading属性

enter image description here

答案 1 :(得分:0)

w3c标准说domLoading is no longer in PerformanceNavigationTiming
Chrome和Firefox设置了performance.domLoading == undefined,但该属性仍然存在。您可以在控制台中看到它。

console.log(JSON.stringify(performance.timing).split(/[{,}]/).join('\n'))

将其放在<head>的开头以将其取回:

<script>
  Performance.prototype.domLoading = performance.now()
</script>

这是有效的,因为DOM刚开始解析页面。