1. 程式人生 > >web前端動態新增進度條

web前端動態新增進度條

為了網路延遲載入或者為了防止提交後重復點選提交按鈕,比較好的方式就是顯示一個比較優雅的進度條

原始碼如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>進度條</title>
    <style>
        *{
            padding: 0;
            margin: 0;
        }
        .loading{
            width
: 100%
; height: 100%; background: #ffffff; opacity: 0.5; left: 0; top:0; position: fixed; z-index: 100; }
.loading .pic{ width: 100px; height: 100px; position: absolute; left
: 0
; top:0; bottom: 0; right: 0; margin: auto; text-align: center; font-size: 20px; line-height: 100px; }
</style> <script src="js/jquery.js"></script> <script> document.onreadystatechange=function
() {
if ("interactive"==document.readyState){ var ahtml="<div class='loading'> <div class='pic'> <img src='images/loading.svg' width='80px' height='80px' ><br/><b >"+jjj+"</b></div></div>" ; $("body").append(ahtml); }else if ("complete"==document.readyState){ $(".loading").fadeOut(100); } };
</script> </head> <body> <div> <img src="images/loading_1.png"> <img src="images/loading_2.png"> <img src="images/loading_3.png"> </div> </body> </html>

可以自己調整css樣式實現多種多樣的進度條樣式

可以將上面的js程式碼封裝到common.js,可以在做網路請求的時候做相應的顯隱操作

/**
 * 顯示進度條
 * @param msg 進度條下面顯示的內容
 */
function showLoading(msg) {
    var ahtml="<div class='loading'> <div class='pic'> <img src='image/loading.svg' width='80px' height='80px' ><br>"+msg+"</div></div>" ;
    $("body").append(ahtml);
}

/**
 * 隱藏進度條
 */
function hiddleLoading() {
    $(".loading").fadeOut(100);
}

網路請求進度條

httpUtils.js如下
/**
 * 網路請求
 * @author jiangrongtao
 * Created by on 2017-10-8.
 */
/**
 * 訪問方式 get 和 post
 * @type {string}
 */
var REQUEST_POST='post';
var REQUEST_GET='get';
/**
 * 超時時間
 */
var OUT_TIME_LEVAl_1=1000;
var OUT_TIME_LEVAl_2=2000;
var OUT_TIME_LEVAl_3=3000;
/**
 *
 * @param url 請求路徑
 * @param timeout 超時時間
 * @param data 提交引數
 * @param successCallBack 請求成功的回撥
 * @param errorCallBcak 請求失敗的回撥
 * @param msg 進度條顯示的資訊
 * @param requestType 請求方式get post
 */
function httpAjax(url,timeout,requestType,data,successCallBack,errorCallBcak,msg){
    var isShow=false;
    //顯示進度條
    if(!isShow){
        showLoading(msg);
        isShow=true;
    }
    $.ajax({
        url:url,
        timeout : timeout,
        type : requestType,
        data :data,
        dataType:'json',
        success:function(result){
            // 去掉進度條
            if(isShow){
            hiddleLoading();
                isShow=false;
            }
            console.log("success");
            successCallBack(result);
        },
        error:function (XMLHttpRequest,errorMsg,ex) {
            // 去掉進度條
            if(isShow){
                hiddleLoading();
                isShow=false;
            }
            console.log("error");
            errorCallBcak(errorMsg);
        }
    });
}

/**
 * 顯示進度條
 * @param msg 進度條下面顯示的內容
 */
function showLoading(msg) {
        var ahtml="<div class='loading'> <div class='pic'> <img src='image/loading.svg' width='80px' height='80px' ><br>"+msg+"</div></div>" ;
        $("body").append(ahtml);
}

/**
 * 隱藏進度條
 */
function hiddleLoading() {
        $(".loading").fadeOut(100);
}

具體的使用場景 一般在onclick中

$(document).ready(function(){
          httpAjax(SELECT_USER_BY_ID,OUT_TIME_LEVAl_3,REQUEST_GET,null,
                function successCallBack(result) {
                    console.log(result);
                    initData(result.status);
                },function errorCallBcak(errorMsg){
                    var errorContent = '<p>請求服務失敗,請稍後<a href="xxx.html" style="color:blue">重試</a>!</p>';
                    $("body").html(errorContent);
                },'載入中...');
        });