我试图在同一网站内从一个页面导航到另一个页面之前显示进度条。
我的函数将 updateProgress 函数绑定(bind)到 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);
}
最佳答案
晚了两年,但这个问题似乎有很多观点,应该可以回答。
根据 this问题 gzipped 响应在 Chrome 中总是将 lengthComputable 设置为 false。这很有意义,因为您可能知道有多少压缩数据通过管道传输,但您不知道压缩数据将扩展到多少。
这solution我觉得不错。
关于javascript - XMLHttpRequest onprogress total 在 Chrome 上始终为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27767954/