一、onprogress事件
onprogress事件是XMLHttpRequest对象的一个属性,用于在数据从服务器中接收时周期性地触发,在整个数据传输过程中,可用该属性显示传输的进度。由于onprogress 具有周期性触发的特点,因此适用于大文件或网络环境较差的情况。在onprogress事件中,可以通过event对象获取到传输的相关信息,如已接收的字节数、已传输的百分比等。
function myFunction() {
var xhr = new XMLHttpRequest();
xhr.onprogress = function(event) {
if (event.lengthComputable) {
var percentComplete = (event.loaded / event.total) * 100;
console.log(percentComplete + '% downloaded');
} else {
console.log('Unable to compute progress information since the total size is unknown');
}
};
xhr.open('GET', 'https://www.example.com/large_file');
xhr.send();
}
二、progress
progress事件与onprogress事件类似,都用于获取传输的进度信息。progress事件是XMLHttpRequest对象的另一个属性,不同于onprogress事件,progress事件在数据从服务器中接收时持续触发,而不是周期性触发。
function myFunction() {
var xhr = new XMLHttpRequest();
xhr.addEventListener('progress', function(event) {
if (event.lengthComputable) {
var percentComplete = (event.loaded / event.total) * 100;
console.log(percentComplete + '% downloaded');
} else {
console.log('Unable to compute progress information since the total size is unknown');
}
}, false);
xhr.open('GET', 'https://www.example.com/large_file');
xhr.send();
}
三、onprogress是什么意思
onprogress是XMLHttpRequest对象的一个属性,在数据从服务器中接收时周期性地触发。可以在onprogress事件中获取到传输的相关信息。
四、onprogresschanged
onprogresschanged是在onprogress事件中的一个函数,用于检测传输的进度是否发生改变。在数据传输过程中,通过调用该函数,可以实时获取数据的传输情况。
function myFunction() {
var xhr = new XMLHttpRequest();
xhr.onprogress = function(event) {
if (event.lengthComputable) {
var percentComplete = (event.loaded / event.total) * 100;
console.log(percentComplete + '% downloaded');
if (percentComplete === 100) {
console.log('Download complete');
} else {
onprogresschanged(percentComplete);
}
} else {
console.log('Unable to compute progress information since the total size is unknown');
}
};
xhr.open('GET', 'https://www.example.com/large_file');
xhr.send();
}
五、onprogresschanged循环调用
在数据传输过程中,可以通过循环调用onprogresschanged函数,实时获取数据的传输情况。
function myFunction() {
var xhr = new XMLHttpRequest();
var intervalID;
xhr.onprogress = function(event) {
if (event.lengthComputable) {
var percentComplete = (event.loaded / event.total) * 100;
console.log(percentComplete + '% downloaded');
if (percentComplete === 100) {
console.log('Download complete');
clearInterval(intervalID);
} else {
intervalID = setInterval(function() {
onprogresschanged(percentComplete);
}, 1000);
}
} else {
console.log('Unable to compute progress information since the total size is unknown');
}
};
xhr.open('GET', 'https://www.example.com/large_file');
xhr.send();
}
六、onprogresschanged newProgress
onprogresschanged和newProgress是两个函数,用于在访问外部资源时实时更新进度条。
function myFunction() {
var xhr = new XMLHttpRequest();
var intervalID;
xhr.onprogress = function(event) {
if (event.lengthComputable) {
var percentComplete = (event.loaded / event.total) * 100;
newProgress(percentComplete);
if (percentComplete === 100) {
console.log('Download complete');
clearInterval(intervalID);
} else {
intervalID = setInterval(function() {
onprogresschanged(percentComplete);
}, 1000);
}
} else {
console.log('Unable to compute progress information since the total size is unknown');
}
};
xhr.open('GET', 'https://www.example.com/large_file');
xhr.send();
}
function newProgress(percent) {
var progressBar = document.getElementById('progressBar');
progressBar.style.width = percent + '%';
}
七、onprogress表示正在读取时触发
在数据从服务器中接收时,onprogress事件会周期性地触发,表示正在读取数据。在onprogress事件中,可以通过event对象获取到传输的相关信息,如已接收的字节数、已传输的百分比等。
function myFunction() {
var xhr = new XMLHttpRequest();
xhr.onprogress = function(event) {
if (event.lengthComputable) {
var percentComplete = (event.loaded / event.total) * 100;
console.log(percentComplete + '% downloaded');
} else {
console.log('Unable to compute progress information since the total size is unknown');
}
};
xhr.open('GET', 'https://www.example.com/large_file');
xhr.send();
}
八、总结
onprogress事件在数据传输过程中周期性触发,用于获取传输的相关信息,如已接收的字节数、已传输的百分比等。progress事件与onprogress事件类似,也可用于获取传输的进度信息,不过它是持续触发的。onprogresschanged函数可以检测传输的进度是否发生改变,从而实现实时更新进度条的效果。onprogress表示正在读取数据时触发,可在这个事件中获取到传输的相关信息。在实际开发中,根据需求选择合适的事件,且应注意优化数据传输体验。
原创文章,作者:VPSVO,如若转载,请注明出处:https://www.506064.com/n/361802.html
微信扫一扫
支付宝扫一扫