【问题标题】:Deprecated domLoading is removed! What to use instead?已弃用的 domLoading 已删除!改用什么?
【发布时间】:2019-04-27 10:14:38
【问题描述】:

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

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

found 2015 年 9 月 17 日的动机:

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

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

如果没有在处理文档时使用此属性,我无法知道文档需要多长时间才能成为interactive、获得content loadedcomplete

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

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 performance performance-testing navigation-timing-api


    【解决方案1】:

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

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

    把它放在&lt;head&gt; 的开头以回收它:

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

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

    【讨论】:

      猜你喜欢
      • 2016-02-17
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多