- 21
- 모니터
- 조회 수 618
안녕하세요? Jquery로 이런게 가능할까요? (PHP이어도 상관 없지만..) setTimeout 같은건 좀 다르려나..
페이지 접속시 5초 이상 걸린다면 함수(로딩 화면) 실행, 로딩 완료되면 다시 종료.
이전에 이 같은 방식의 소스를 본적이 있는 것 같은데.. 어딨는지 기억이 ㅠㅠ
작성자
댓글 21
아쉽게도 대부분이 그냥 단순히 이미지 출력하는 수준으로만 나와서..ㅠㅠ..
오픈된 소스를 혹시 알고 계시면 알려주세요~
음.. 접속하는 페이지에서 AJAX로 원본 페이지를 받아오고...
AJAX에서 응답시간이나 timeout 시간 체크해서 5초 이상이 되면 함수 실행.
같은 방식은 생각이 납니다만...
음... 잘 모르겠네요..ㅠ
AJAX ㅜㅜ..
ajax로 받아오면서
settimeout 설정하고(settimeout 안에서 받아졌는지 체크)
받아졌을시 로딩화면을 fadeout 하면 될것같네요!
흐음.. settimeout으로 가능한가요?
X초 후에 출력되는 게 아니라 X를 초과하면 나타나는건데요?
그냥 settimeout 로 5초후에 로드 안됬으면 로딩중 출력시키고
onpageloaded 로 로딩바 닫으면 될것 같은데요...
문제는 그걸 어떻게 짜야하는지 모르겠.. 히이이잌.
앗 코드를 만들면 공유해달라고 하려고 했는데. ㅋㅋ
언젠가 만들어지면 슬쩍 공유할게요ㅋㅋ
약간 늦긴 했지만
http://humit.dothome.co.kr/test.html
참조하시기 바랍니다.
저건 그냥 settimeout 사용하신거 아닌가요? ㅠㅠ...
x초후 실행 같은 타이머가 아니라..
DOM 불러오는 것이 ready 상태일때 x초 이상 걸리는 경우..
로딩 화면이 load(DOM 완료)까지 출력되는겁니다.
즉, 순식간이죠. (네트워크 환경이 느리거나.. 사이트가 무거운 경우를 보안하기 위함이죠)
ajax로 불러오는 걸 해서 5초 이상이 되면 loading이미지를 띄워주고, 그게 아니면 로딩 이미지를 보여주지 않는 방식을 원하시는 거 아닌가요?
5초 후에 불러오는게 아니라 5초 이상 걸린다면(DOM 로드가 진행형인 경우) DOM 완료까지 이미지/로딩을 출력하는거에요 :)
(DOM 로드가 완료되면 이미지/로딩은 사라지는거죠) // 백지 화면의 지루함을 완화하기 위함이죠 ㅎㅎ
지금 구현한 방법은 5초 후에 불러오는 방식이 아닙니다....
// 이부분은 ajax로 요청을 하고 3초 이후에 실행될 내용입니다. 로딩이 안된 경우에 로딩 이미지를 보여줍니다. 빠른 결과를 위해 3초로 설정했고, 이부분을 5초로 설정하면 5초 뒤에 로딩 이미지가 나타납니다.
setTimeout(function(){
var elem = $('div#loading img')[0];
if(elem.className !== "load") {
$(elem).css('display', 'block');
console.log('show loading image!');
} else {
console.log('Already load data');
}
}, 3000);
// 이부분에서 실제 데이터 요청이 들어갑니다. 현재 test.php는 5초 후에 응답을 하게 되어있습니다.
$.ajax({
url: "/test.php",
type: "GET",
dataType: "text",
timeout: 0,
success: function(data) {
$('div#result').text("result : " + data);
$('div#loading img').css('display','none').addClass('load');
}
});
홍.. 일단 상세한 설명 감사합니다 :)
실행될 시간을 빼버린다면..
test.php 불러오기 전에는(즉 로딩이 안된 경우) 로딩 이미지가 출력된다는 의미죠?
그렇다면 test.php 내용물을 끝까지 불러올때까지 로딩 이미지가 계속 출력되나요?
아니면 test.php 불러오는 순간 로딩 이미지 출력이 끝나는건가요?
요청후 3초간은 기다렸다가 이후에 로딩이미지를 출력하고, test.php 내용을 전부 읽어오면 로딩 이미지를 없애는 방식으로 되어있습니다.
아하..ㅜㅜ 네. 이해했습니다.
하지만 아쉽게도 제가 원하는 것은 타이머 방식이 아니에요 ㅜㅜ.
그래도 감사합니다!!
혹시 자체적으로 로딩이 5초 이상이 걸릴거라고 생각이 되어진다면 바로 로딩 이미지가 나오기를 원하시는 거였나요??
DOM로드가 x초 안에 완료가 안된 경우 로딩이 DOM완료까지 출력하는거죠.
로딩 페이지나 로딩 프로그레스 소스들을 참고해보면 되지 않을까요?