本文摘自PHP中文网,作者coldplay.xixi,侵删。

免费学习推荐:js视频教程
用手机上网,经常看到加载进度条,尤其是加载图片的。
做过多张图片的加载进度,但是对于单张图片,特别是图片比较大的时候,需要进度条告诉用户加载进度,且可以提高用户体验。
传统的加载肯定不行,需要用到 AJAX 加载,AJAX 加载有个专门的进度事件 progress。
具体demo 如下。实现目标:
加载某图片,且显示加载百分比进度;加载完毕后,就展示该图片。
HTML 结构:
1 2 3 4 5 6 | <p id= "pro" >
0%
</p>
<p id= "box" >
内容加载中。。。
</p>
|
JavaScript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | let box = document.getElementById( "box" );
let pro = document.getElementById( "pro" );
let req = new XMLHttpRequest();
req.open( "get" , "images/1.png" , true);
req.responseType = "blob" ;
req.send();
req.addEventListener( "progress" , function (oEvent){
if (oEvent.lengthComputable) {
var percentComplete = oEvent.loaded / oEvent.total * 100;
pro.innerHTML = percentComplete + "%" ;
} else {
}
});
req.addEventListener( "load" , function (oEvent){
let blob = req.response;
pro.innerHTML = "图片加载完毕" ;
box.innerHTML = `<img src = ${window.URL.createObjectURL(blob)} >`;
});
|
这里需要说明的是:
1 | req.responseType = "blob" ;
|
设置请求数据类型为 blob 类型。Binary large Object,就是较大的二进制对象,可以用来加载非文本数据。此demo 加载的是一张图片。
因此,在接受返回数据的时候,不是 reponseText 。
window.URL.createObjectURL(blob) 会基于 blob 对象生成对象的URL路径。这样,就可以在浏览器中看到 blob 所代表的资源(图片,视频,音频等)
相关免费学习推荐:javascript(视频)
以上就是JavaScript介绍AJAX加载单张图片展示进度的方法的详细内容,更多文章请关注木庄网络博客!
相关阅读 >>
javascript中有哪些循环方法
浏览器如何运行javascript
javascript函数是什么
javascript中怎么使用item方法
javascript vs dart 两者之间的区别与作用
javascript简称什么
express中间件body-parser的实现方法
javascript为什么没有权限
vue keep-alive组件的使用以及原理介绍
如何在javascript中绘制方块
更多相关阅读请进入《javascript》频道 >>
人民邮电出版社
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者
转载请注明出处:木庄网络博客 » JavaScript介绍AJAX加载单张图片展示进度的方法