基于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 select下拉框操作常用方法
Nov 09 Javascript
禁用Tab键JS代码兼容Firefox和IE
Apr 18 Javascript
js判断登录与否并确定跳转页面的方法
Jan 30 Javascript
javascript实现跨域的方法汇总
Jun 25 Javascript
JavaScript实现LI列表数据绑定的方法
Aug 04 Javascript
jquery实现顶部向右伸缩的导航区域代码
Sep 02 Javascript
jQuery mobile类库使用时加载导航历史的方法简介
Dec 04 Javascript
JS面向对象(3)之Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
Feb 25 Javascript
vue-cli如何添加less 以及sass
Jul 06 Javascript
关于定制FileField中的上传文件名称问题
Aug 22 Javascript
解决vue中修改了数据但视图无法更新的情况
Aug 27 Javascript
如何根据业务封装自己的功能组件
Apr 19 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 XML数据解析代码
2010/05/26 PHP
PHP中array_merge和array相加的区别分析
2013/06/17 PHP
浅析PHP安装扩展mcrypt以及相关依赖项(PHP安装PECL扩展的方法)
2013/07/05 PHP
php xhprof使用实例详解
2019/04/15 PHP
php实现 master-worker 守护多进程模式的实例代码
2019/07/20 PHP
jQuery学习4 浏览器的事件模型
2010/02/07 Javascript
Javascript中的window.event.keyCode使用介绍
2011/04/26 Javascript
自己写了一个展开和收起的多更能型的js效果
2013/03/05 Javascript
jquery如何获取复选框的值
2013/12/12 Javascript
JS点击链接后慢慢展开隐藏着图片的方法
2015/02/17 Javascript
深入理解jquery自定义动画animate()
2016/05/24 Javascript
学习Javascript闭包(Closure)知识
2016/08/07 Javascript
javascript实现一个网页加载进度loading
2017/01/04 Javascript
vue自定v-model实现表单数据双向绑定问题
2018/09/03 Javascript
ES6常用小技巧总结【去重、交换、合并、反转、迭代、计算等】
2019/12/21 Javascript
es6函数之尾调用优化实例分析
2020/04/25 Javascript
js实现3D旋转相册
2020/08/02 Javascript
js实现石头剪刀布游戏
2020/10/11 Javascript
Python科学计算之Pandas详解
2017/01/15 Python
python画折线图的程序
2018/07/26 Python
Python循环中else,break和continue的用法实例详解
2019/07/11 Python
在Python中append以及extend返回None的例子
2019/07/20 Python
python 利用pyttsx3文字转语音过程详解
2019/09/25 Python
python regex库实例用法总结
2021/01/03 Python
TripAdvisor越南:全球领先的旅游网站
2017/09/21 全球购物
俄罗斯设计师家具购物网站:The Furnish
2019/12/01 全球购物
LightInTheBox法国站:中国跨境电商
2020/03/05 全球购物
请说出以下代码输出什么
2013/08/30 面试题
战友聚会邀请函
2014/01/18 职场文书
应聘教师自荐书
2014/06/16 职场文书
2014年电厂工作总结
2014/12/04 职场文书
2014年外贸业务员工作总结
2014/12/11 职场文书
小英雄雨来观后感
2015/06/09 职场文书
导游词之井冈山
2019/11/20 职场文书
仅用一句SQL更新整张表的涨跌幅、涨跌率的解决方案
2021/05/06 MySQL
安装配置mysql及Navicat prenium的详细流程
2021/06/10 MySQL