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

Deprecated domLoading is removed! What to use instead?

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

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

found 2015 年 9 月 17 日的动机:

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

MDN 也没有说明应该使用什么。我觉得很奇怪,我没有发现任何关于这个的问题。 responseEnd 和 domInteractive 是我能看到的时间上最接近的属性,但它们相差太多。

如果在处理文档时不使用此属性,我无法知道文档需要多长时间 interactive, to get content loaded or to 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 没有开始来衡量......

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