在我的应用程序中,我使用 API 请求大型 JSON 文件XMLHttpRequest。这按预期工作。
我想在用户等待时显示进度条。一些 JSON 文件大小在 6 到 10 Mb 以上,因此进度条将有助于改善整体体验。
这是我正在做的事情的一个例子:
var progress = document.getElementById('progress');
function getData(url) {
var req = new XMLHttpRequest();
req.onprogress = function(event) {
if (event.lengthComputable) {
progress.value = event.loaded / event.total * 100;
} else {
console.log('lengthComputable failed');
}
}
req.onload = function() {
console.log('Finished loading');
// ... handle data
}
req.open('GET', url, true);
req.overrideMimeType('application/json');
req.send(null);
}
getData('https://raw.githubusercontent.com/datasets/geo-countries/master/data/countries.geojson');
Run Code Online (Sandbox Code Playgroud)
另外在 jsfiddle 上: https: //jsfiddle.net/ctL5f73s/1/
如果内容未经过 gzip 压缩,则进度条似乎在我迄今为止测试过的所有浏览器上都能正常工作。但如果服务器将其作为 gzip 发送,则只有 Firefox 可以工作。
作为上下文,我正在从 …