使用HTML5 Navigation Timing API时,导航开始时间设置为0

navigationStart time set to 0 when using HTML5 Navigation Timing API

本文关键字:开始时 开始 时间 设置 导航 Navigation HTML5 Timing API 使用      更新时间:2023-09-26

我使用HTML5 Navigation Timing API来测量用户在我的网站上感知的页面加载时间,使用以下代码:

//  Process load time using "Navigation Timing"  
function recordLoadTime ()
{
    if (typeof(window.performance) !== "undefined" 
        && typeof(window.performance.timing) !== "undefined")
    {
        if(window.performance.timing.loadEventEnd > 0)
        {
            var time = window.performance.timing.loadEventEnd  
                   - window.performance.timing.navigationStart;
        } else {
            setTimeout(recordLoadTime, 1000);
        }
    }
}

time变量也被添加到cookie中,并在用户的后续请求中记录在服务器上。

我面临的问题是,记录的时间与当前历元时间非常接近:

  • 即CCD_ 2被设置为0
  • 但是CCD_ 3具有非零值(即当前历元时间)

我在Chrome/11.0、Chrome/12.0、MSIE 7.0、MSIE 8.0和MSIE 9.0 上看到过这种行为

我暂时解决了这个问题,修改了上面的代码,只在navigationStart大于0时记录加载时间。但我希望记录所有页面的加载时间。

window.onload = function()
{
  setTimeout(function(){
  var t = performance.timing;
}, 0);