js获取html加载进度,基于Javascript实现文件实时加载进度的方法

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

108e0f7b3eac97a67c8bcc4b30db11e0.gif

代码如下

Document

*{margin: 0;padding: 0;}

div{width:200px;height: 30px;border:1px solid #ccc;margin: 50px auto;}

span{display:inline-block;height: 30px;background: #abcdef;}

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);

}

有些情况下,资源会加载失败,但是页面又需要显示出来。这里我是把失败的情况就跳过了,如果有需要,可以考虑重新换资源加载

注意事项

1、测试的时候,需要把文件放到服务器上,走本地的file协议是看不到效果的

2、测试的时候,可以把网络设置为2g或者3g,可以方便看到加载的进度,然后禁止使用缓存

f59aa60e3e45648df6792b0cadd93dfd.png

拓展

这里只监听了img格式,如果有需要,可以把js和css都加进来

注意:监听js或者css,需要把创建的资源追加到页面中,要不然监听不到onload和onerror事件

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);

}

c2c589d5f597eef6112788b6d4c3c7a7.png

总结

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值