基于Javascript实现文件实时加载进度的方法


Posted in Javascript onOctober 12, 2016

我们首先来看看要实现的效果图

基于Javascript实现文件实时加载进度的方法

代码如下

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
 <style>
  *{margin: 0;padding: 0;}
  div{width:200px;height: 30px;border:1px solid #ccc;margin: 50px auto;}
  span{display:inline-block;height: 30px;background: #abcdef;}
 </style>
</head>
<body>

 <div>
  <span id="loading"></span>
 </div>


 <!-- 图片需要自己添加到本地 协议要走http or https -->
 <script>
  var img_arr = ['1.jpg','2.jpg','3.png'];
  var nums = img_arr.length;
  var start = 0;
  for(var i in img_arr){
   var img = document.createElement('img');
   img.src = img_arr[i];
   (function(j){
    img.onload = function(){
     start++;
     if(start == nums){
      console.log('全部加载完成');
     }
     document.getElementById('loading').style.width = (start/nums)*100 + '%';
    };
    img.onerror = function(){
     start++;
     console.log(img_arr[j] + '失败');
     document.getElementById('loading').style.width = (start/nums)*100 + '%';
    }
   })(i);

  }

 </script>
</body>
</html>

有些情况下,资源会加载失败,但是页面又需要显示出来。这里我是把失败的情况就跳过了,如果有需要,可以考虑重新换资源加载

注意事项

     1、测试的时候,需要把文件放到服务器上,走本地的file协议是看不到效果的

     2、测试的时候,可以把网络设置为2g或者3g,可以方便看到加载的进度,然后禁止使用缓存

基于Javascript实现文件实时加载进度的方法

拓展

这里只监听了img格式,如果有需要,可以把js和css都加进来

注意:监听js或者css,需要把创建的资源追加到页面中,要不然监听不到onload和onerror事件

<script>
  var script_arr = ['http://cdn.bootcss.com/jquery/3.1.0/jquery.slim.js','http://cdn.bootcss.com/jquery/3.0.0-rc1/jquery.js','http://cdn.bootcss.com/jquery/3.0.0-beta1/jquery.slim.min.js'];
  var nums = script_arr.length;
  var start = 0;
  for(var i in script_arr){
   var script = document.createElement('script');
   script.src = script_arr[i];
   (function(j){
    document.body.appendChild(script);
    script.onload = function(){
     start++;
     if(start == nums){
      console.log('全部加载完成');
     }
     document.getElementById('loading').style.width = (start/nums)*100 + '%';
    };
    script.onerror = function(){
     start++;
     console.log(srcript_arr[j] + '失败');
     document.getElementById('loading').style.width = (start/nums)*100 + '%';
    }
   })(i);

  }

 </script>

基于Javascript实现文件实时加载进度的方法

总结

以上就是这篇文章的全部内容了,本文实现的这个功能还是很实用的,希望能对大家的学习或者工作带来一定的帮助,如果有疑问大家可以交流。

Javascript 相关文章推荐
用CSS+JS实现的进度条效果效果
Jun 05 Javascript
Prototype String对象 学习
Jul 19 Javascript
JavaScript中判断整数的多种方法总结
Nov 08 Javascript
理解js对象继承的N种模式
Jan 25 Javascript
浅析$.getJSON异步请求和同步请求
Jun 06 Javascript
JS 事件绑定、事件监听、事件委托详细介绍
Sep 28 Javascript
10道典型的JavaScript面试题
Mar 22 Javascript
Vue 项目中遇到的跨域问题及解决方法(后台php)
Mar 28 Javascript
如何理解Vue的v-model指令的使用方法
Jul 19 Javascript
vue+element项目中过滤输入框特殊字符小结
Aug 07 Javascript
js实现一款简单踩白块小游戏(曾经很火)
Dec 02 Javascript
vue 页面跳转的实现方式
Jan 12 Vue.js
Vue.js中数组变动的检测详解
Oct 12 #Javascript
有关文件上传 非ajax提交 得到后台数据问题
Oct 12 #Javascript
jquery动态创建div与input的实例代码
Oct 12 #Javascript
javascript加载xml 并解析各节点的值(实现方法)
Oct 12 #Javascript
jquery动态添加文本并获取值的方法
Oct 12 #Javascript
jquery 动态增加,减少input表单的简单方法(必看)
Oct 12 #Javascript
微信小程序 生命周期详解
Oct 12 #Javascript
You might like
PHP令牌 Token改进版
2008/07/18 PHP
详解thinkphp中的volist标签
2018/01/15 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
Javascript 调试利器 Firebug使用详解六
2009/07/05 Javascript
基于jquery的web页面日期格式化插件
2011/11/15 Javascript
Nodejs sublime text 3安装与配置
2014/06/19 NodeJs
Javascript Object 对象学习笔记
2014/12/17 Javascript
js获取json元素数量的方法
2015/01/27 Javascript
jQuery使用attr()方法同时设置多个属性值用法实例
2015/03/26 Javascript
jquery+html5烂漫爱心表白动画代码分享
2015/08/24 Javascript
jquery实现弹出层登录和全屏层注册特效
2015/08/28 Javascript
深入理解逻辑表达式的用法 与或非的用法
2016/06/06 Javascript
基于javascript实现的快速排序
2016/12/02 Javascript
Nodejs 获取时间加手机标识的32位标识实现代码
2017/03/07 NodeJs
vue-resourse将json数据输出实例
2017/03/08 Javascript
JavaScript基本语法_动力节点Java学院整理
2017/06/26 Javascript
js插件实现图片滑动验证码
2020/09/29 Javascript
微信小程序picker组件简单用法示例【附demo源码下载】
2017/12/05 Javascript
layui表格checkbox选择全选样式及功能的实例
2018/03/07 Javascript
JS求Number类型数组中最大元素方法
2018/04/08 Javascript
Vue+element-ui 实现表格的分页功能示例
2018/08/18 Javascript
小程序指纹验证的实现代码
2018/12/04 Javascript
JavaScript函数式编程(Functional Programming)纯函数用法分析
2019/05/22 Javascript
jquery实现简单自动轮播图效果
2020/07/29 jQuery
关于vue的列表图片选中打钩操作
2020/09/09 Javascript
Angular短信模板校验代码
2020/09/23 Javascript
深入理解 Python 中的多线程 新手必看
2016/11/20 Python
为什么入门大数据选择Python而不是Java?
2018/03/07 Python
解决pandas.DataFrame.fillna 填充Nan失败的问题
2018/11/06 Python
解决python 上传图片限制格式问题
2019/10/30 Python
python实现图像拼接功能
2020/03/23 Python
销售自我评价
2013/10/22 职场文书
2014年单位工作总结范文
2014/11/27 职场文书
2015年个人思想总结
2015/03/09 职场文书
社区公民道德宣传日活动总结
2015/03/23 职场文书
看雷锋电影观后感
2015/06/10 职场文书