ajax 图片加载完成,JavaScript介绍AJAX加载单张图片展示进度的方法

5f69f7571edc3da406f788e50b588e24.png

免费学习推荐:js视频教程

用手机上网,经常看到加载进度条,尤其是加载图片的。

做过多张图片的加载进度,但是对于单张图片,特别是图片比较大的时候,需要进度条告诉用户加载进度,且可以提高用户体验。

传统的加载肯定不行,需要用到 AJAX 加载,AJAX 加载有个专门的进度事件 progress。

具体demo 如下。实现目标:

加载某图片,且显示加载百分比进度;加载完毕后,就展示该图片。

HTML 结构:

0%

内容加载中。。。

JavaScript: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; // 不是 responseText

pro.innerHTML = "图片加载完毕";

box.innerHTML = `%24%7Bwindow.URL.createObjectURL(blob)%7D`;

});

这里需要说明的是:req.responseType = "blob";

设置请求数据类型为 blob 类型。Binary large Object,就是较大的二进制对象,可以用来加载非文本数据。此demo 加载的是一张图片。

因此,在接受返回数据的时候,不是 reponseText 。

window.URL.createObjectURL(blob) 会基于 blob 对象生成对象的URL路径。这样,就可以在浏览器中看到 blob 所代表的资源(图片,视频,音频等)相关免费学习推荐:javascript(视频)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值