基于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:void(0)的真正含义实例分析
Aug 20 Javascript
js tab效果的实现代码
Dec 26 Javascript
js实现表单多按钮提交action的处理方法
Oct 24 Javascript
JavaScript+html5 canvas绘制的小人效果
Jan 27 Javascript
jQuery与Ajax以及序列化
Feb 01 Javascript
JS深度拷贝Object Array实例分析
Mar 31 Javascript
原生js实现网易轮播图效果
Apr 10 Javascript
清除浏览器缓存的几种方法总结(必看)
Dec 09 Javascript
实例浅析js的this
Dec 11 Javascript
傻瓜式解读koa中间件处理模块koa-compose的使用
Oct 30 Javascript
JS学习笔记之贪吃蛇小游戏demo实例详解
May 29 Javascript
原生jQuery实现只显示年份下拉框
Dec 24 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
弹出层之1:JQuery.Boxy (一) 使用介绍
2011/10/06 Javascript
Function.prototype.bind用法示例
2013/09/16 Javascript
javascript计算用户打开网页的停留时间
2014/01/09 Javascript
ExtJS如何设置与获取radio控件的选取状态
2014/01/22 Javascript
JavaScript事件委托的技术原理探讨示例
2014/04/17 Javascript
防止登录页面出现在frame中js代码
2014/07/22 Javascript
jquery实现翻动fadeIn显示的方法
2015/03/05 Javascript
JavaScript中实现无缝滚动、分享到侧边栏实例代码
2016/04/06 Javascript
浅述Javascript的外部对象
2016/12/07 Javascript
vue 2.0封装model组件的方法
2017/08/03 Javascript
vue中简单弹框dialog的实现方法
2018/02/26 Javascript
Element-ui tree组件自定义节点使用方法代码详解
2018/09/17 Javascript
vue开发中遇到的问题总结
2020/04/07 Javascript
浅谈JS for循环中使用break和continue的区别
2020/07/21 Javascript
js实现验证码干扰(动态)
2021/02/23 Javascript
用Python编写脚本使IE实现代理上网的教程
2015/04/23 Python
Python函数返回值实例分析
2015/06/08 Python
Python探索之pLSA实现代码
2017/10/25 Python
Python操作SQLite数据库过程解析
2019/09/02 Python
对python中 math模块下 atan 和 atan2的区别详解
2020/01/17 Python
Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)
2020/04/16 Python
css3实现背景图片拉伸效果像桌面壁纸一样
2013/08/19 HTML / CSS
CSS3 Calc实现滚动条出现页面不跳动问题
2017/09/14 HTML / CSS
欧洲最大的笔和书写专家:The Pen Shop
2017/03/19 全球购物
德国帽子专家:Hutshopping
2019/11/03 全球购物
是否可以从一个static方法内部发出对非static方法的调用?
2014/08/18 面试题
建筑经济管理专业求职信分享
2014/01/06 职场文书
公司培训欢迎词
2014/01/10 职场文书
英语感谢信范文
2015/01/20 职场文书
狮子林导游词
2015/02/03 职场文书
幼师辞职信范文大全
2015/05/12 职场文书
传单、海报早OUT了,另类传单营销方案送给你!
2019/07/15 职场文书
2019年房屋委托租赁合同范本(通用版)!
2019/07/17 职场文书
情侣餐厅的创业计划书范本!
2019/07/26 职场文书
关于企业的执行力标语大全
2020/01/06 职场文书
RPM包方式安装Oracle21c的方法详解
2021/08/23 Oracle