如何使用 JavaScript 获取页面加载持续时间
How to get page load duration using JavaScript
我正在尝试获取加载页面所需的时间,但我不确定运行此脚本的正确方法。
我以为我可以做到:
window.addEventListener("load", function(){
console.log(performance.getEntriesByType("navigation")[0].duration);
});
然而它总是returns 0;
如果我 运行 它在控制台之后,它工作正常。
在 window 加载事件之后,我可以使用另一个事件 运行s 吗?
这个函数的正确用法是什么?
编辑:
似乎使用 setTimeout 将其添加为页面完全加载后 运行s 的第一件事。工作代码是:
window.addEventListener("load", function(){
setTimeout(function(){
console.log(performance.getEntriesByType("navigation")[0].duration);
}, 0);
});
您可以使用浏览器
给出的性能API来获取加载时间
let loadTime = window.performace.timing.loadEventEnd - window.performance.timing.navigationStart;
查看 https://developer.mozilla.org/en-US/docs/Web/API/Navigation_timing_API 了解更多
您还可以轮询正在设置的值:
const perf = () => {
const duration = performance.getEntriesByType("navigation")[0].duration;
if (!duration) setTimeout(perf, 0);
else console.log({ duration });
}
window.addEventListener('DOMContentLoaded', perf);
我正在尝试获取加载页面所需的时间,但我不确定运行此脚本的正确方法。
我以为我可以做到:
window.addEventListener("load", function(){
console.log(performance.getEntriesByType("navigation")[0].duration);
});
然而它总是returns 0;
如果我 运行 它在控制台之后,它工作正常。 在 window 加载事件之后,我可以使用另一个事件 运行s 吗? 这个函数的正确用法是什么?
编辑: 似乎使用 setTimeout 将其添加为页面完全加载后 运行s 的第一件事。工作代码是:
window.addEventListener("load", function(){
setTimeout(function(){
console.log(performance.getEntriesByType("navigation")[0].duration);
}, 0);
});
您可以使用浏览器
给出的性能API来获取加载时间 let loadTime = window.performace.timing.loadEventEnd - window.performance.timing.navigationStart;
查看 https://developer.mozilla.org/en-US/docs/Web/API/Navigation_timing_API 了解更多
您还可以轮询正在设置的值:
const perf = () => {
const duration = performance.getEntriesByType("navigation")[0].duration;
if (!duration) setTimeout(perf, 0);
else console.log({ duration });
}
window.addEventListener('DOMContentLoaded', perf);