頁面加載進度條


頁面加載進度條實現原理:
將要加載的js動態的添加到head中,並根據每個是否加載完成,統計當前一共加載完成的個數。當每一項都加載完成,加載成功。
設置加載失敗時間。當超過這個時間提示加載失敗。

詳細解釋:

<!DOCTYPE html>
<html>
    <head>
        <title>頁面加載進度條</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <style>
            #test{height:20px; width: 200px;border:1px solid #666666; margin:300px auto;  font-size: 12px; position: relative;
text-align: center; line-height: 20px;} #test div{height:100%;width:0px; background: #FF0000;} #test span{display:block; height:100%; width: 100%; position: absolute; left: 0px; top: 0px; z-index: -1px;} </style> </head> <body> <div id="test"> <div></div> <span>0%</span> </div> <script> var arr =[ "http://www.huohu123.com/static/nav/js/jquery-1.4.2.min.js?v=5d204", "http://news.2hua.com/adiframe/163/NewsL04/01/js/BX.1.0.1.B.js", "http://c.cnzz.com/cnzz_core.php?web_id=3558971&l=none", "http://img1.126.net/channel7/insert560120_111012.js", "http://news.2hua.com/adiframe/163/NewsL03/01/js/BX.1.0.1.B.js", "http://www.google-analytics.com/ga.js"]; 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]; // 進度條數字 for(var i =0,j=arr.length;i<j;i++){ // 初始化數組,並將每一項的值都設為false marr[i] = false; } function include_js(file,index) { // 檢測是否加載完成,並添加到head中 var _doc = document.getElementsByTagName('head')[0]; var js = document.createElement('script'); js.setAttribute('type', 'text/javascript'); js.setAttribute('src', file); _doc.appendChild(js); if (document.all) { //如果是IE js.onreadystatechange = function () { if (js.readyState == 'loaded' || js.readyState == 'complete') { marr[index] = true; } } } else { js.onload = function () { marr[index] = true; } } } for(var i = 0,j=arr.length;i<j;i++){ // 向head中添加每一項 include_js(arr[i],i); } var stop = setInterval(function(){ var index = 0; // 統計當前的總共加載完畢的個數 for(var i=0,j=marr.length;i<j;i++){ if(marr[i] === true){ index++; } } mtestspan.innerHTML= parseInt((index/marr.length)*100)+"%"; mtestdiv.style.width = parseInt((index/marr.length)*100)*2+"px"; if(index === marr.length){ // 加載完成 mtest.parentNode.removeChild(mtest); clearInterval(stop); } timing+=60; if(timing>maxtime){ // 加載失敗 clearInterval(stop); mtest.innerHTML= "頁面加載失敗!"; } },60); </script> </body> </html>

 

代碼示例:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM