基于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学习历程和心得小结
Aug 16 Javascript
js控制容器隐藏出现防止样式变化的两种方法
Apr 25 Javascript
jQuery统计上传文件大小的方法
Jan 24 Javascript
node.js中格式化数字增加千位符的几种方法
Jul 03 Javascript
基于JavaScript实现轮播图代码
Jul 14 Javascript
js 实现数值的千分位及保存小数方法(推荐)
Aug 01 Javascript
AngularJS模板加载用法详解
Nov 04 Javascript
ES6中let 和 const 的新特性
Sep 03 Javascript
jquery 动态遍历select 赋值的实例
Sep 12 jQuery
关于JS模块化的知识点分享
Oct 16 Javascript
Vue.js自定义指令学习使用详解
Oct 19 Javascript
vue中 数字相加为字串转化为数值的例子
Nov 07 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学习 计数器实例代码
2008/06/15 PHP
PHP获取网页所有连接的方法(附demo源码下载)
2016/03/30 PHP
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
PHP中__set()实例用法和基础讲解
2019/07/23 PHP
15款优秀的jQuery导航菜单插件分享
2011/07/19 Javascript
基于JQuery的一句话搞定手风琴菜单
2012/09/14 Javascript
JS Pro-深入面向对象的程序设计之继承的详解
2013/05/07 Javascript
jquery选择器之属性过滤选择器详解
2014/01/27 Javascript
自定义jQuery插件方式实现强制对象重绘的方法
2015/03/23 Javascript
JavaScript实现模仿桌面窗口的方法
2015/07/18 Javascript
JavaScript实现的Tween算法及缓冲特效实例代码
2015/11/03 Javascript
JavaScript弹窗基础篇
2016/04/27 Javascript
JS实现的跨浏览器解析XML文件实例
2016/06/21 Javascript
为Jquery EasyUI 组件加上清除功能的方法(详解)
2017/04/13 jQuery
javascript简单链式调用案例分析
2017/05/10 Javascript
原生js中ajax访问的实例详解
2017/09/19 Javascript
Vue-cli项目获取本地json文件数据的实例
2018/03/07 Javascript
layer插件select选中默认值的方法
2018/08/14 Javascript
JS如何获取地址栏的参数实例讲解
2018/10/06 Javascript
详解在Node.js中发起HTTP请求的5种方法
2019/01/10 Javascript
如何自动化部署项目?折腾服务器之旅~
2019/04/16 Javascript
如何阻止小程序遮罩层下方图层滚动
2019/09/05 Javascript
好用的Python编辑器WingIDE的使用经验总结
2016/08/31 Python
python中装饰器级连的使用方法示例
2017/09/29 Python
python不换行之end=与逗号的意思及用途
2017/11/21 Python
Django使用unittest模块进行单元测试过程解析
2019/08/02 Python
Python迭代器Iterable判断方法解析
2020/03/16 Python
Python 制作查询商品历史价格的小工具
2020/10/20 Python
python 还原梯度下降算法实现一维线性回归
2020/10/22 Python
数以千计的折扣工业产品:ESE Direct
2018/05/20 全球购物
幼儿园教师教育感言
2014/02/28 职场文书
婚前财产公证书
2014/04/10 职场文书
小学生春游活动方案
2014/08/20 职场文书
解决golang结构体tag编译错误的问题
2021/05/02 Golang
80行代码写一个Webpack插件并发布到npm
2021/05/24 Javascript
mysql insert 存在即不插入语法说明
2022/03/25 MySQL