如何使用JavaScript获取页面加载持续时间

4

我想要获取页面加载所需的时间,但是不确定该如何运行此脚本。

我认为可以这样做:

window.addEventListener("load", function(){
    console.log(performance.getEntriesByType("navigation")[0].duration);
});

然而,它总是返回0;

如果我在控制台中运行它,则正常工作。 是否有另一个事件可以在窗口加载事件之后运行? 这个函数的正确用法是什么?

编辑: 似乎使用setTimeout将其添加为页面完全加载后运行的第一件事。 工作代码如下:

window.addEventListener("load", function(){    
    setTimeout(function(){
        console.log(performance.getEntriesByType("navigation")[0].duration);
    }, 0);
});
2个回答

0

同样的问题,window.performance.timing.loadEventEnd始终等于0。 - Craig

0

您还可以轮询设置的值:

const perf = () => {
  const duration = performance.getEntriesByType("navigation")[0].duration;
  if (!duration) setTimeout(perf, 0);
  else console.log({ duration });
}
window.addEventListener('DOMContentLoaded', perf);

谢谢,那个方法可行。它似乎只运行了两次就给出了正确的值。最终我使用了setTimeout(function(){console.log(performance.getEntriesByType("navigation")[0].duration)}, 0);,它只运行一次并给出了值。 - Craig

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接