Chrome上的XMLHttpRequest onprogress total总是为0

时间:2015-01-04 16:55:33

标签: javascript jquery ajax google-chrome xmlhttprequest

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

我的函数将updateProgress函数绑定到XMLHttpRequest onprogress事件,并将用户重定向到新页面(xhr.readyState == 4&& xhr.status == 200) 看起来工作得很好,只是Chrome显示“总数”为零,不会让进度条正常运行。我的代码如下。

提前谢谢你......

$('.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);
}

1 个答案:

答案 0 :(得分:2)

迟了两年,但这个问题似乎有很多意见,应该回答。

根据this问题,在Chrome中,gzip压缩响应始终会将lengthComputable设置为false。这很有意义,因为您可能知道管道中有多少压缩数据,但您无法知道压缩数据将扩展到多少。

solution对我来说似乎很好。