基于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 相关文章推荐
javascript编程起步(第七课)
Feb 27 Javascript
javascript new 需不需要继续使用
Jul 02 Javascript
jquery DIV撑大让滚动条滚到最底部代码
Jun 06 Javascript
javascript 实现字符串反转的三种方法
Nov 23 Javascript
css与javascript跨浏览器兼容性总结
Sep 15 Javascript
AngularJS基础学习笔记之控制器
May 10 Javascript
Javascript中判断对象是否为空
Jun 10 Javascript
jquery实现经典的淡入淡出选项卡效果代码
Sep 22 Javascript
Jquery元素追加和删除的实现方法
May 24 Javascript
预防网页挂马的方法总结
Nov 03 Javascript
jquery,js简单实现类似Angular.js双向绑定
Jan 13 Javascript
vue实现简单计算商品价格
Sep 14 Javascript
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
如何将一个表单同时提交到两个地方处理
2006/10/09 PHP
ThinkPHP利用PHPMailer实现邮件发送实现代码
2013/09/26 PHP
php中数字、字符与对象判断函数用法实例
2014/11/26 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
tp5框架使用composer实现日志记录功能示例
2019/01/10 PHP
laravel框架如何设置公共头和公共尾
2019/10/22 PHP
豆瓣网的jquery代码实例
2008/06/15 Javascript
基于JavaScript自定义构造函数的详解说明
2013/04/24 Javascript
jquery $.each() 使用小探
2013/08/23 Javascript
jQuery中offsetParent()方法用法实例
2015/01/19 Javascript
jquery实现的代替传统checkbox样式插件
2015/06/19 Javascript
JS实现仿Windows经典风格的选项卡Tab切换代码
2015/10/20 Javascript
在AngularJS中使用jQuery的zTree插件的方法
2016/04/21 Javascript
JS经典正则表达式笔试题汇总
2016/12/15 Javascript
vue-cli webpack模板项目搭建及打包时路径问题的解决方法
2018/02/26 Javascript
javascript中toFixed()四舍五入使用方法详解
2018/09/28 Javascript
javascript将扁平的数据转为树形结构的高效率算法
2020/02/27 Javascript
python将xml xsl文件生成html文件存储示例讲解
2013/12/03 Python
python实现ftp客户端示例分享
2014/02/17 Python
Python中Random和Math模块学习笔记
2015/05/18 Python
简单解析Django框架中的表单验证
2015/07/17 Python
一步步教你用Python实现2048小游戏
2017/01/19 Python
python 实现矩阵上下/左右翻转,转置的示例
2019/01/23 Python
python类的实例化问题解决
2019/08/31 Python
Python搭建代理IP池实现接口设置与整体调度
2019/10/27 Python
Python for循环及基础用法详解
2019/11/08 Python
解决jupyter运行pyqt代码内核重启的问题
2020/04/16 Python
python绘制高斯曲线
2021/02/19 Python
加拿大健康、婴儿和美容产品在线购物:Well.ca
2016/11/30 全球购物
如何找出EMP表里面SALARY第N高的employee
2013/12/05 面试题
年终考核实施方案
2014/05/26 职场文书
意外伤害赔偿协议书范本
2014/09/28 职场文书
放射科岗位职责
2015/02/14 职场文书
2016秋季运动会前导词
2015/11/25 职场文书
《思路决定出路》读后感3篇
2019/12/11 职场文书
你喜欢篮球吗?Python实现篮球游戏
2021/06/11 Python