页面加载进度条改进版

简介: html部分: 0%   js部分: var arr =[ { "msrc":"*.css", "mtype":"css", "mpos":0 }, { "msrc":"*.

html部分:

<div id="loadingbg"></div>
<div id="test"><div></div><span>0%</span></div>

 

js部分:

    var arr =[ 
        {
            "msrc":"*.css",
            "mtype":"css",
            "mpos":0
        },
        {
            "msrc":"*.js",
            "mtype":"css",
            "mpos":0
        },
        {
            "msrc":"*.js",
            "mtype":"js",
            "mpos":0
        }
    ];

    var marr = new Array(); // 标记arr中的是否加载完毕
    var maxtime = 20000;  // 设置加载失败时间20秒
    var timing = 0; // 记录当前的时间
    var mtest = document.getElementById("test");  //  进度条容器
    var mtestdiv = mtest.getElementsByTagName("div")[0];  // 进度条线
    var mtestspan = mtest.getElementsByTagName("span")[0]; // 进度条数字
    var mloadingbg = document.getElementById("loadingbg");

    for(var i =0,j=arr.length;i<j;i++){  // 初始化数组,并将每一项的值都设为false
        marr[i] = false;
    }

    function include_js(file,mtype,index) {  // 检测是否加载完成,并添加到head中
        var _doc = document.getElementsByTagName('head')[0];
        if(mtype==="js"){
            var js = document.createElement('script');
           
            js.setAttribute('type', 'text/javascript');
            js.async = false;
            js.setAttribute('src', file);
        
        
            if (document.all) { //如果是IE
                js.onload = js.onreadystatechange = function () {
                    if (js.readyState === 'complete' || js.readyState ==="loaded" ) {
                        marr[index] = true;
                    }
                }
            }
            else {
                js.onload = function () {
                    marr[index] = true;
                }
            }
            _doc.appendChild(js);
        }
        else if(mtype==="css"){
            var lk = document.createElement('link');
            lk.setAttribute('rel', 'stylesheet');
            lk.setAttribute('href', file);
            lk.async = false;
        
            if (document.all) { //如果是IE
                lk.onreadystatechange = function () {
                    if (lk.readyState === 'complete') {
                        marr[index] = true;
                    }
                }
            }
            else {
                lk.onload = function () {
                    marr[index] = true;
                }
            }
            _doc.appendChild(lk);
        }
    }


    var mindex = 0;
    var isone = true;

    var stop = setInterval(function(){
        if(isone){
            isone = false;
            include_js(arr[mindex].msrc,arr[mindex].mtype,mindex);
            mindex++;
        }
        if(marr[mindex-1]){
            include_js(arr[mindex].msrc,arr[mindex].mtype,mindex);
            mindex++;
        }

        mtestspan.innerHTML= parseInt((mindex/marr.length)*100)+"%";
        mtestdiv.style.width = parseInt((mindex/marr.length)*100)+"%";
    
        if(mindex === marr.length){  // 加载完成
            setTimeout(function(){
                mloadingbg.parentNode.removeChild(mloadingbg);
                isone=true;
                clearInterval(stop);
            },200);
        }
        timing+=60;
        if(timing>maxtime){  //  加载失败
            clearInterval(stop);
            mtest.innerHTML= "页面加载失败!";
        }
    },60);
目录
相关文章
|
4月前
|
JavaScript 前端开发
jQuery 第五章(效果,滑动,动画,停止动画)
jQuery 第五章(效果,滑动,动画,停止动画)
44 0
|
5月前
|
小程序 JavaScript
如何给小程序页面加载一张背景图片
如何给小程序页面加载一张背景图片
81 0
无限滚动-放上暂停滚动jsdemo效果示例(真理)
无限滚动-放上暂停滚动jsdemo效果示例(真理)
|
XML 图形学 数据格式
Animation组合动画踩坑-实现循环播放动画,可控制次数
Animation组合动画踩坑-实现循环播放动画,可控制次数
|
Web App开发 JavaScript 前端开发
我优化了进度条,页面性能竟提高了70%
大家好,我是零一。最近我准备在组里进行代码串讲,所以我梳理了下项目之前的业务代码。在梳理的过程中,我看到了有个进度条组件写的非常好,这又想起我刚开始学前端时写的进度条的代码,跟这个比起来真的差距太大了(大部分的初学者应该都想不到,而且我第一次实习的公司带我的mentor亦是如此)。 因此,我想给大家分享一下这个思路极好的进度条组件,同时它也存在非常严重的性能问题,本文末尾也会讲解一下问题所在以及优化方式
223 0
我优化了进度条,页面性能竟提高了70%
|
前端开发 索引
多段动画整合为一个动画的思路
多段动画整合为一个动画的思路
为NProgress增加模态层,更完美的应用于复杂网页的细长进度条
为NProgress增加模态层,更完美的应用于复杂网页的细长进度条
101 0
|
前端开发
CSS实现鼠标移动到图片或按钮上缓慢变大,添加过渡动画效果,自定义动画时间
CSS实现鼠标移动到图片或按钮上缓慢变大,添加过渡动画效果,自定义动画时间
2115 0
|
JavaScript
jQuery图片水平滑动延迟加载动画
在线演示 本地下载
1089 0