• 技术文章 >web前端 >js教程

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

    coldplay.xixicoldplay.xixi2021-01-26 10:06:41转载389

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

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

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

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

    具体demo 如下。实现目标:

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

    HTML 结构:

    <p id="pro">
        0%
    </p>
    <p id="box">
        内容加载中。。。
    </p>

    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 = `<img src = ${window.URL.createObjectURL(blob)} >`;
    });

    这里需要说明的是:

    req.responseType = "blob";

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

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

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

    相关免费学习推荐:javascript(视频)

    以上就是JavaScript介绍AJAX加载单张图片展示进度的方法的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:CSDN,如有侵犯,请联系admin@php.cn删除
    上一篇:安卓webviev支持react吗 下一篇:编写javascript程序的唯一工具是纯文本编辑器吗?
    大前端线上培训班

    相关文章推荐

    • JavaScript知识点总结之 文档对象模型• JavaScript中创建对象的7种经典方式(总结)• JavaScript去除拼接字符串末尾符号的方法• Javascript实现复制动作的几种方法(总结)• 详解JavaScript降低函数复杂度的方法• 记录JavaScript的学习笔记

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网