首页 > 编程 > JavaScript > 正文

基于Javascript实现文件实时加载进度的方法

2019-11-20 08:46:18
字体:
来源:转载
供稿:网友

我们首先来看看要实现的效果图

代码如下

 <!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,可以方便看到加载的进度,然后禁止使用缓存


拓展

这里只监听了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>

总结

以上就是这篇文章的全部内容了,本文实现的这个功能还是很实用的,希望能对大家的学习或者工作带来一定的帮助,如果有疑问大家可以交流。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表