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

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

但是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起点。

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

最佳答案

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刚开始解析页面。

09-27 10:15