基于Javascript实现文件实时加载进度的方法
2019/6/27 21:43:16
本文主要是介绍基于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,可以方便看到加载的进度,然后禁止使用缓存
拓展
这里只监听了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实现文件实时加载进度的方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-09vue3开发前端表单缓存自定义指令,移动端h5必备插件
- 2024-05-09React Hooks在class组件中的使用方式
- 2024-03-30[OIDC in Action] 2. 基于OIDC(OpenID Connect)的SSO(纯JS客户端)
- 2024-03-29terraform jsonencode
- 2024-03-13vuex-persist
- 2024-03-11icons for vue
- 2024-03-07breadcrumbs react js
- 2024-03-06react login page example
- 2024-03-06react router uselocation
- 2024-03-04postgres jsonb_set