基于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 继承详解(三)
Jul 13 Javascript
jQuery学习笔记之总体架构
Jun 03 Javascript
JS数组的常见用法实例
Feb 10 Javascript
jquery实现用户打分评分特效
May 28 Javascript
js实现向右横向滑出的二级菜单效果
Aug 27 Javascript
三种Node.js写文件的方式
Mar 08 Javascript
JavaScript基础重点(必看)
Jul 09 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图的组合双轴图效果示例【附demo源码下载】
Mar 09 Javascript
基于AngularJS实现的工资计算器实例
Jun 16 Javascript
electron制作仿制qq聊天界面的示例代码
Nov 26 Javascript
tracking.js实现前端人脸识别功能
Apr 16 Javascript
Vue.js中Line第三方登录api的实现代码
Jun 29 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
PHP实现把数字ID转字母ID
2013/08/12 PHP
php实现mysql数据库分表分段备份
2015/06/18 PHP
php无序树实现方法
2015/07/28 PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
2017/04/04 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
2020/12/29 PHP
javascript入门·动态的时钟,显示完整的一些方法,新年倒计时
2007/10/01 Javascript
比较全的JS checkbox全选、取消全选、删除功能代码
2008/12/19 Javascript
js图片延迟技术一般的思路与示例
2014/03/20 Javascript
JavaScript实现的使用键盘控制人物走动实例
2014/08/27 Javascript
jQuery实现瀑布流的取巧做法分享
2015/01/12 Javascript
简介JavaScript中的setHours()方法的使用
2015/06/11 Javascript
详解数组Array.sort()排序的方法
2020/05/09 Javascript
vue.js  父向子组件传参的实例代码
2017/10/29 Javascript
bootstrap实现点击删除按钮弹出确认框的实例代码
2018/08/16 Javascript
解决vue脚手架项目打包后路由视图不显示的问题
2018/09/20 Javascript
微信小程序中的canvas 文字断行和省略号显示功能的处理方法
2018/11/14 Javascript
Swiper.js实现移动端元素左右滑动
2019/09/08 Javascript
nestjs中异常过滤器Exceptionfilter的具体使用
2021/02/07 Javascript
[10:39]DOTA2上海特级锦标赛音乐会纪录片
2016/03/21 DOTA
理解Python中的With语句
2015/02/02 Python
python链接oracle数据库以及数据库的增删改查实例
2018/01/30 Python
python判断无向图环是否存在的示例
2019/11/22 Python
python实现用类读取文件数据并计算矩形面积
2020/01/18 Python
Python3.7黑帽编程之病毒篇(基础篇)
2020/02/04 Python
Python flask框架实现查询数据库并显示数据
2020/06/04 Python
Python字典实现伪切片功能
2020/10/28 Python
Python加载数据的5种不同方式(收藏)
2020/11/13 Python
No7 Beauty美国官网:英国国民护肤品牌
2019/10/31 全球购物
毕业生教师求职信
2013/10/20 职场文书
我的中国梦演讲稿300字
2014/08/19 职场文书
教师自我剖析材料(四风问题)
2014/09/30 职场文书
2015年酒店年度工作总结
2015/05/23 职场文书
学习弘扬焦裕禄精神心得体会
2016/01/23 职场文书
MySQL千万级数据表的优化实战记录
2021/08/04 MySQL
Python四款GUI图形界面库介绍
2022/06/05 Python