基于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栏目列表隐藏/显示简单实现
Apr 03 Javascript
5秒后跳转到另一个页面的js代码
Oct 12 Javascript
通过Javascript读取本地Excel文件内容的代码示例
Apr 08 Javascript
JQuery radio(单选按钮)操作方法汇总
Apr 15 Javascript
基于jQuery倾斜打开侧边栏菜单特效代码
Sep 15 Javascript
Javascript es7中比较实用的两个方法示例
Jul 21 Javascript
基于jquery实现多级菜单效果
Jul 25 jQuery
Angular ElementRef简介及其使用
Oct 01 Javascript
通过js给网页加上水印背景实例
Jun 17 Javascript
微信小程序如何访问公众号文章
Jul 08 Javascript
JavaScript数组去重实现方法小结
Jan 17 Javascript
uniapp实现可以左右滑动导航栏
Oct 21 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实现手机归属地查询API接口实现代码
2012/08/27 PHP
Yii实现多数据库主从读写分离的方法
2014/12/29 PHP
详解PHP swoole process的使用方法
2017/08/26 PHP
发现的以前不知道的函数
2006/09/19 Javascript
Javascript UrlDecode函数代码
2010/01/09 Javascript
通过jQuery源码学习javascript(一)
2012/12/27 Javascript
JS简单的轮播的图片滚动实例
2013/06/17 Javascript
js 将json字符串转换为json对象的方法解析
2013/11/13 Javascript
js 通用订单代码
2013/12/23 Javascript
jQuery操作select下拉框的text值和value值的方法
2014/05/31 Javascript
基于NodeJS的前后端分离的思考与实践(三)轻量级的接口配置建模框架
2014/09/26 NodeJs
几种二级联动案例(jQuery\Array\Ajax php)
2016/08/13 Javascript
Angular JS数据的双向绑定详解及实例
2016/12/31 Javascript
JavaScript用JSONP跨域请求数据实例详解
2017/01/06 Javascript
jQuery实现判断控件是否显示的方法
2017/01/11 Javascript
jQuery使用JSONP实现跨域获取数据的三种方法详解
2017/05/04 jQuery
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
2018/01/21 jQuery
[02:30]联想杯DOTA2完美世界全国高校联赛—北京站现场
2015/11/16 DOTA
跟老齐学Python之折腾一下目录
2014/10/24 Python
Python求两个文本文件以行为单位的交集、并集与差集的方法
2015/06/17 Python
python实现批量监控网站
2016/09/09 Python
python添加模块搜索路径和包的导入方法
2019/01/19 Python
使用OpenCV获取图片连通域数量,并用不同颜色标记函
2020/06/04 Python
基于python计算滚动方差(标准差)talib和pd.rolling函数差异详解
2020/06/08 Python
IE下实现类似CSS3 text-shadow文字阴影的几种方法
2011/05/11 HTML / CSS
amazeui模态框弹出后立马消失并刷新页面
2020/08/19 HTML / CSS
Kingsoft金山公司C/C++笔试题
2016/05/10 面试题
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
2012/11/24 面试题
简历里的自我评价范文
2014/02/24 职场文书
机关节能减排实施方案
2014/03/17 职场文书
明信片寄语大全
2014/04/08 职场文书
超市活动计划书
2014/04/24 职场文书
计算机网络及管理学专业求职信
2014/06/05 职场文书
伦敦奥运会的口号
2014/06/21 职场文书
办公室个人总结
2015/02/28 职场文书
​(迎国庆)作文之我爱我的祖国
2019/09/19 职场文书