基于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 相关文章推荐
(function(){})()的用法与优点
Mar 11 Javascript
容易被忽略的JS脚本特性
Sep 13 Javascript
基于jquery实现的定时显示与隐藏div广告的实现代码
Aug 22 Javascript
在JS中解析HTML字符串示例代码
Apr 16 Javascript
原生javascript实现拖动元素示例代码
Sep 01 Javascript
完美兼容多浏览器的js判断图片路径代码汇总
Apr 17 Javascript
javascript中的3种继承实现方法
Jan 27 Javascript
jQuery实现的无限级下拉菜单功能示例
Sep 12 Javascript
JavaScript鼠标特效大全
Sep 13 Javascript
javascript中mouseenter与mouseover的异同
Jun 06 Javascript
详解webpack和webpack-simple中如何引入css文件
Jun 28 Javascript
Vue为什么要谨慎使用$attrs与$listeners
Aug 27 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中获取内网用户MAC地址(WINDOWS/linux)的实现代码
2011/08/11 PHP
php 多关键字 高亮显示实现代码
2012/04/23 PHP
wamp下修改mysql访问密码的解决方法
2013/05/07 PHP
PHP递归删除目录几个代码实例
2014/04/21 PHP
PHP实现数组递归转义的方法
2014/08/28 PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
2015/11/19 PHP
最新版本PHP 7 vs HHVM 多角度比较
2016/02/14 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
2018/03/02 PHP
PHP工厂模式的日常使用
2019/03/20 PHP
jQuery中$.click()无效问题分析
2015/01/29 Javascript
jquery通过name属性取值的简单实现方法
2016/06/20 Javascript
Bootstrap图片轮播组件使用实例解析
2016/06/30 Javascript
angularjs封装$http为factory的方法
2017/05/18 Javascript
AngularJS中使用ngModal模态框实例
2017/05/27 Javascript
vue组件Prop传递数据的实现示例
2017/08/17 Javascript
Chart.js 轻量级HTML5图表绘制工具库(知识整理)
2018/05/22 Javascript
微信小程序登录换取token的教程
2018/05/31 Javascript
Vue请求JSON Server服务器数据的实现方法
2018/11/02 Javascript
js实现小球在页面规定的区域运动
2020/06/16 Javascript
Python中针对函数处理的特殊方法
2014/03/06 Python
Python语言生成水仙花数代码示例
2017/12/18 Python
Window10+Python3.5安装opencv的教程推荐
2018/04/02 Python
wxpython多线程防假死与线程间传递消息实例详解
2019/12/13 Python
python 贪心算法的实现
2020/09/18 Python
Python 实现PS滤镜中的径向模糊特效
2020/12/03 Python
如何用tempfile库创建python进程中的临时文件
2021/01/28 Python
意大利奢侈品网站:Italist
2016/08/23 全球购物
佳能法国商店:Canon法国
2019/02/14 全球购物
外语学院毕业生的自我鉴定
2013/11/28 职场文书
运动会方阵解说词
2014/02/12 职场文书
2014年机关植树节活动方案
2014/02/27 职场文书
县人大领导班子四风对照检查材料思想汇报
2014/10/09 职场文书
幼儿园推普周活动总结
2015/05/07 职场文书
2016年第32个教师节红领巾广播稿
2015/12/18 职场文书
Redis基本数据类型String常用操作命令
2022/06/01 Redis