Chrome上的XMLHttpRequest onprogress total总是为0

B10*_*B10 11 javascript ajax jquery google-chrome xmlhttprequest

我试图在同一网站内从一个页面导航到另一个页面之前显示进度条.

我的函数将updateProgress函数绑定到XMLHttpRequest onprogress事件,并将用户重定向到新页面(xhr.readyState == 4 && xhr.status == 200)似乎工作正常,但Chrome显示"总计"为零,赢得了' t让进度条正常运行.我的代码如下.

先感谢您...

$('.ajaxNavi').click(function (e) {
  e.preventDefault();
  var url = $(this).attr('href');
  var xhr = new XMLHttpRequest();
  xhr.onprogress = updateProgress;
  xhr.onreadystatechange = function () { 
    if (xhr.readyState == 4 && xhr.status == 200)
    // REDIRECT HERE
    }
  });
  xhr.open("GET", url, true);
  xhr.setRequestHeader("Content-Type", "text/html");
  xhr.send();
});

function updateProgress(e) {
  console.log(e.loaded + '    ' + e.total);
}
Run Code Online (Sandbox Code Playgroud)

Jos*_*els 7

晚了两年,但是这个问题似乎有很多观点,应该可以回答。

根据这个问题,在 Chrome 中,gzipped 响应将始终将 lengthComputable 设置为 false。这很有意义,因为您可能知道通过管道传输的压缩数据有多少,但您不知道压缩数据将扩展到多少。

这个解决方案对我来说似乎是一个很好的解决方案