基于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 一个自定义长度的文本自动换行的函数
Aug 19 Javascript
Javascript !!的作用
Dec 04 Javascript
在Javascript里访问SharePoint列表数据的实现方法
May 22 Javascript
js setTimeout 常见问题小结
Aug 13 Javascript
JavaScript实现的字符串replaceAll函数代码分享
Apr 02 Javascript
js实现一个链接打开两个链接地址的方法
May 12 Javascript
jQuery焦点图轮播特效代码分享(3款)
Sep 05 Javascript
直接拿来用的15个jQuery代码片段
Sep 23 Javascript
js 定义对象数组(结合)多维数组方法
Jul 27 Javascript
PHP抓取HTTPS内容和错误处理的方法
Sep 30 Javascript
利用PHP实现递归删除链表元素的方法示例
Oct 23 Javascript
JavaScript分页组件使用方法详解
Jul 26 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返回当前日期或者指定日期是周几
2015/05/21 PHP
javascript 打印页面代码
2009/03/24 Javascript
JS 拼图游戏 面向对象,注释完整。
2009/06/18 Javascript
iframe 父窗口和子窗口相互的调用方法集锦
2010/12/15 Javascript
10款非常有用的 Ajax 插件分享
2012/03/14 Javascript
js操作输入框中选择内容兼容IE及其他主流浏览器
2014/04/22 Javascript
jquery使用经验小结
2015/05/20 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
2016/07/12 Javascript
瀑布流的实现方式(原生js+jquery+css3)
2020/06/28 Javascript
javascript时间差插件分享
2016/07/18 Javascript
JS仿hao123导航页面图片轮播效果
2016/09/01 Javascript
Vue.js 中的 $watch使用方法
2017/05/25 Javascript
webpack引入eslint配置详解
2018/01/22 Javascript
JS实现百度搜索接口及链接功能实例代码
2018/02/02 Javascript
JavaScript中AOP的实现与应用
2019/05/06 Javascript
vue路由传参三种基本方式详解
2019/12/09 Javascript
JS通用方法触发点击事件代码实例
2020/02/17 Javascript
javascript设计模式 ? 组合模式原理与应用实例分析
2020/04/14 Javascript
JavaScript常用工具函数库汇总
2020/09/17 Javascript
python保存字符串到文件的方法
2015/07/01 Python
使用Python操作excel文件的实例代码
2017/10/15 Python
Python 中的Selenium异常处理实例代码
2018/05/03 Python
python3.7简单的爬虫实例详解
2019/07/08 Python
Python tkinter模版代码实例
2020/02/05 Python
python中remove函数的踩坑记录
2021/01/04 Python
Html5画布_动力节点Java学院整理
2017/07/13 HTML / CSS
英国排名第一的礼品体验公司:Red Letter Days
2018/08/16 全球购物
介绍一下SQL注入攻击的种类和防范手段
2012/02/18 面试题
人力资源管理专业毕业生推荐信
2013/11/07 职场文书
文明村创建实施方案
2014/03/27 职场文书
主管竞聘书范文
2014/03/31 职场文书
赔偿协议书范本
2014/09/12 职场文书
单位婚育证明范本
2014/11/21 职场文书
通报表扬范文
2015/01/17 职场文书
2015年全国保险公众宣传日活动方案
2015/05/06 职场文书
SQL SERVER实现连接与合并查询
2022/02/24 SQL Server