基于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 相关文章推荐
基于jquery的商品展示放大镜
Aug 07 Javascript
js判断手机浏览器操作系统和微信浏览器的方法
Apr 30 Javascript
JQuery组件基于Bootstrap的DropDownList(完整版)
Jul 05 Javascript
简单模拟node.js中require的加载机制
Oct 27 Javascript
JQuery学习总结【一】
Dec 01 Javascript
js实现下一页页码效果
Mar 07 Javascript
ng2学习笔记之bootstrap中的component使用教程
Mar 09 Javascript
想用好React的你必须要知道的一些事情
Jul 24 Javascript
vue 动态绑定背景图片的方法
Aug 10 Javascript
微信小程序使用component自定义toast弹窗效果
Nov 27 Javascript
如何利用vue+vue-router+elementUI实现简易通讯录
May 13 Javascript
jquery实现二级导航下拉菜单效果实例
May 14 jQuery
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
浅谈php常用的7大框架的优缺点
2020/07/20 PHP
用javascript实现点击链接弹出&quot;图片另存为&quot;而不是直接打开
2007/08/15 Javascript
JQuery 操作Javascript对象和数组的工具函数小结
2010/01/22 Javascript
尝试在让script的type属性等于text/html
2013/01/15 Javascript
中文字符串截取的js函数代码
2013/04/17 Javascript
js中widow.open()方法使用详解
2013/07/30 Javascript
javascript制作的滑动图片菜单
2015/05/15 Javascript
分享一道关于闭包、bind和this的面试题
2017/02/20 Javascript
详解Vue使用命令行搭建单页面应用
2017/05/24 Javascript
浅谈ECMAScript6新特性之let、const
2017/08/02 Javascript
详解ES6通过WeakMap解决内存泄漏问题
2018/03/09 Javascript
JS关于刷新页面的相关总结
2018/05/09 Javascript
js实现图片跟随鼠标移动效果
2019/10/16 Javascript
原生js实现html手机端城市列表索引选择城市
2020/06/24 Javascript
Vue封装Axios请求和拦截器的步骤
2020/09/16 Javascript
[02:47]DOTA2亚洲邀请赛 HR战队出场宣传片
2015/02/07 DOTA
Python入门篇之面向对象
2014/10/20 Python
Python和C/C++交互的几种方法总结
2017/05/11 Python
Python UnboundLocalError和NameError错误根源案例解析
2018/10/31 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
2019/01/17 Python
Python2.7实现多进程下开发多线程示例
2019/05/31 Python
TensorFlow tf.nn.conv2d实现卷积的方式
2020/01/03 Python
CSS3模块的目前的状况分析
2010/02/24 HTML / CSS
css3 border-image使用说明
2010/06/23 HTML / CSS
美国在线购买内衣网站:HerRoom
2020/02/22 全球购物
2014年度个人工作总结
2014/11/07 职场文书
皇城相府导游词
2015/02/06 职场文书
高校自主招生自荐信2015
2015/03/04 职场文书
新闻通讯稿范文
2015/07/22 职场文书
同事欢送会致辞
2015/07/31 职场文书
教师纪律作风整顿心得体会
2016/01/23 职场文书
2019年“我为祖国点赞”演讲稿(3篇)
2019/09/26 职场文书
详细谈谈MYSQL中的COLLATE是什么
2021/06/11 MySQL
Nginx部署vue项目和配置代理的问题解析
2021/08/04 Servers
《LOL》“克隆大作战”久违归来 幻灵战队皮肤上线
2022/04/03 其他游戏