一、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