티스토리 뷰

IT/Javascript

Javascript - Loading bar 구현

Normal_One 2017. 3. 25. 16:42

 ajax로 데이터를 불러올 때나 페이지를 이동할 때 아무것도 뜨지 않으면 사용자들은 이게 진행되고 있는지 아닌지를 판별할 수가 없습니다. 그렇게 되다보면 마음의 여유가 없어지고 무한정 클릭해서 렉이 발생되기도 합니다. 따라서, 사용자들에게 마음의 여유를 주기 위해 기다리는 동안 이 프로세스가 잘 실행되고 있음을 시각적으로 보여줄 필요가 있습니다. 이럴 때 필요한게 바로 Loading bar입니다. 로딩바 혹은 대기창이라고 합니다. 준비물은 JQuery입니다. JQuery가 있어야만 .ajaxStart와 .ajaxStop을 쓸 수 있습니다. 일단 소스부터 보여드리도록 하겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<div id="loadingBar" style="display:none;">
    <img src="/images/loadingBar.gif"/>
</div>
 
<script type="text/javascript">
 
    $(function(){
        
        $(document).ajaxStart(function(){
            $("#loadingBar").show(); //미리 만들어둔 loadingBar
        }).ajaxStop(function(){
            $("#loadingBar").hide();            
        });
        
        $("a").click(function(){
            if (this.href != null && this.target != "_blank") {
                $("#loadingBar").show(); //미리 만들어둔 loadingBar                
            }
        });
    });
 
</script>
cs


 일단 소스는 위와 같습니다. .ajaxStart일 때 미리 만들어둔 Loading bar를 보여주고 ajaxStop일 때는 다시 Loading bar를 숨기는 방식입니다. Loading bar는 구글신에게 검색해보면 무수히 나오니 그 중 적절한 gif 파일을 찾아 사용하면 되겠습니다.

 

 그 밑의 방식은 제가 저번 프로젝트를 하면서 사용한 약간 꼼수식의 방식입니다. 페이지를 이동할 때도 느린 경우가 종종 발생했는데 그렇게 될 때는 Loading bar를 보여줄 수 있는 수단이 없었습니다. 그래서 임의로 위와 같이 만들어주었습니다. 해당 프로젝트를 할 때 링크를 가는 방식이 모두 <a>태그로 되어 있어서 <a>태그일 때 페이지를 이동하면 Loading bar가 나타나도록 해주었습니다. 단, 이동할 때 페이지가 지정이 안되있다거나 target이 "_blank", 즉 새창일 때는 하지 않았습니다. 새창을 열 때도 지정해두면 남은 페이지에 계속 Loading bar가 남기 때문입니다. 이 외에 응용으로 href에 맨 끝의 주소(예를 들면 .do나 .action일 때) 예외 처리를 해두면 더 완성도 높은 Loading bar를 만들 수 있겠습니다.


댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday