基于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 面向对象编程  function是方法(函数)
Sep 17 Javascript
jQuery实现动画效果的实例代码
May 07 Javascript
深入document.write()与HTML4.01的非成对标签的详解
May 08 Javascript
jquery操作cookie插件分享
Jan 14 Javascript
用javascript替换URL中的参数值示例代码
Jan 27 Javascript
node.js Web应用框架Express入门指南
May 28 Javascript
js实现时间显示几天前、几小时前或者几分钟前的方法集锦
May 29 Javascript
javascript生成大小写字母
Jul 03 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
Jan 23 Javascript
微信小程序radio组件使用详解
Jan 31 Javascript
Vue结合Video.js播放m3u8视频流的方法示例
May 04 Javascript
jQuery 淡入/淡出效果函数用法分析
May 19 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
php数据结构与算法(PHP描述) 快速排序 quick sort
2012/06/21 PHP
php中利用str_pad函数生成数字递增形式的产品编号
2013/09/30 PHP
微信公众号开发之语音消息识别php代码
2016/08/08 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
2019/07/06 PHP
巧妙破除网页右键禁用的十大绝招
2006/08/12 Javascript
JQery 渐变图片导航效果代码 漂亮
2010/01/01 Javascript
jquery中通过父级查找进行定位示例
2013/06/28 Javascript
JQuery实现动态表格点击按钮表格增加一行
2014/08/24 Javascript
Jquery动态添加输入框的方法
2015/05/29 Javascript
jQuery实现Email邮箱地址自动补全功能代码
2015/11/03 Javascript
jQuery实现checkbox列表的全选、反选功能
2016/11/24 Javascript
Angular.JS判断复选框checkbox是否选中并实时显示
2016/11/30 Javascript
20行JS代码实现网页刮刮乐效果
2017/06/23 Javascript
浅谈关于axios和session的一些事
2017/07/13 Javascript
ReactNative 之FlatList使用及踩坑封装总结
2017/11/29 Javascript
使用webpack3.0配置webpack-dev-server教程
2018/05/29 Javascript
node.js事件轮询机制原理知识点
2019/12/22 Javascript
vue中实现点击空白区域关闭弹窗的两种方法
2020/12/30 Vue.js
[02:19]2018年度DOTA2最佳核心位选手-完美盛典
2018/12/17 DOTA
Python中获取对象信息的方法
2015/04/27 Python
简单了解Python中的几种函数
2017/11/03 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
2019/07/11 Python
Python提取PDF内容的方法(文本、图像、线条等)
2019/09/25 Python
Python jieba库用法及实例解析
2019/11/04 Python
Python3.6安装卸载、执行命令、执行py文件的方法详解
2020/02/20 Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
2020/02/26 Python
Python logging模块写入中文出现乱码
2020/05/21 Python
python tkinter实现连连看游戏
2020/11/16 Python
Python批量删除mysql中千万级大量数据的脚本分享
2020/12/03 Python
html5唤醒APP小记
2019/03/27 HTML / CSS
计算机专业个人简短的自我评价
2013/10/23 职场文书
2014年禁毒工作总结
2014/11/24 职场文书
寒暑假实习证明书模板
2014/11/29 职场文书
2015年学生资助工作总结
2015/05/25 职场文书
每日六道java新手入门面试题,通往自由的道路
2021/06/30 Java/Android
Shell中的单中括号和双中括号的用法详解
2022/12/24 Servers