2

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

在此处输入图像描述

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

我从 2015 年 9 月 17 日找到了一个动机:

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

MDN都没有告诉使用什么来代替。我觉得很奇怪,我没有发现任何关于这个的问题。responseEnd 和 domInteractive 是我能看到的时间上最近的属性,但它们相差太大。

如果没有在处理文档时使用此属性,我无法知道文档交互加载完成内容需要多长时间。

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

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 的开始可以测量。

导航计时级别 2

4

1 回答 1

0

w3c 标准说domLoading 不再在 PerformanceNavigationTiming
Chrome 和 Firefox 集中performance.domLoading == undefined,但该属性仍然存在。您可以在控制台中看到它。

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

把它放在开头<head>以回收它:

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

这是可行的,因为 DOM 刚刚开始解析页面。

于 2019-05-15T01:42:44.157 回答