基于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 相关文章推荐
firefox下jquery iframe刷新页面提示会导致重复之前动作
Dec 17 Javascript
js左右弹性滚动对联广告代码分享
Feb 19 Javascript
js 去除字符串第一位逗号的方法
Jun 07 Javascript
JS获取下拉框显示值和判断单选按钮的方法
Jul 09 Javascript
微信小程序 教程之列表渲染
Oct 18 Javascript
vue2利用Bus.js如何实现非父子组件通信详解
Aug 25 Javascript
微信小程序模板和模块化用法实例分析
Nov 28 Javascript
JS使用cookie保存用户登录信息操作示例
May 30 Javascript
js实现简单页面全屏
Sep 17 Javascript
详解从vue-loader源码分析CSS Scoped的实现
Sep 23 Javascript
JavaScript 严格模式(use strict)用法实例分析
Mar 04 Javascript
Element实现表格嵌套、多个表格共用一个表头的方法
May 09 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绘制饼状图的实现代码
2013/06/07 PHP
关于zend studio 出现乱码问题的总结
2013/06/23 PHP
php模拟用户自动在qq空间发表文章的方法
2015/01/07 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
JS动画效果代码3
2008/04/03 Javascript
Chrome中JSON.parse的特殊实现
2011/01/12 Javascript
浅谈JavaScript字符串与数组
2015/06/03 Javascript
使用Javascript实现选择下拉菜单互移并排序
2016/02/23 Javascript
JS实时弹出新消息提示框并有提示音响起的实现代码
2016/04/20 Javascript
js添加千分位的实现代码(超简单)
2016/08/01 Javascript
利用jquery禁止外层滚动条的滚动
2017/01/05 Javascript
详解jQuery中ajax.load()方法
2017/01/25 Javascript
JS中使用 after 伪类清除浮动实例
2017/03/01 Javascript
Jquery-data的三种用法
2017/04/18 jQuery
JS实现评价的星星功能
2017/08/20 Javascript
ionic3+Angular4实现接口请求及本地json文件读取示例
2017/10/11 Javascript
JavaScript常见鼠标事件与用法分析
2019/01/03 Javascript
编程语言Python的发展史
2014/09/26 Python
python直接访问私有属性的简单方法
2016/07/25 Python
python非递归全排列实现方法
2017/04/10 Python
Python实战小程序利用matplotlib模块画图代码分享
2017/12/09 Python
python中对数据进行各种排序的方法
2019/07/02 Python
Numpy 中的矩阵求逆实例
2019/08/26 Python
opencv实现简单人脸识别
2021/02/19 Python
PyCharm使用之配置SSH Interpreter的方法步骤
2019/12/26 Python
python模拟点击在ios中实现的实例讲解
2020/11/26 Python
Bergfreunde丹麦:登山装备网上零售商
2017/02/26 全球购物
回馈慈善的设计师太阳镜:DIFF eyewear
2019/10/17 全球购物
耐克亚太地区:Nike APAC
2019/12/07 全球购物
你懂得怎么写自荐信吗?
2013/12/27 职场文书
银行领导班子四风对照检查材料
2014/09/27 职场文书
自我查摆剖析材料
2014/10/11 职场文书
结婚典礼主持词
2015/06/29 职场文书
nginx反向代理配置去除前缀案例教程
2021/07/26 Servers
Win11运行育碧游戏总是崩溃怎么办 win11玩育碧游戏出现性能崩溃的解决办法
2022/04/06 数码科技
Redis实现主从复制方式(Master&Slave)
2022/06/21 Redis