제목 | jquery에서 페이지가 로딩되기전에 구문이 실행되는 거 같은데요. | ||
---|---|---|---|
글쓴이 | 닥스훈트 | 작성시각 | 2012/09/04 18:48:50 |
|
|||
function call_viewer(id){ //사진 뷰어 불러오기 $('#photo_view').load('/index.php/pboard/viewer/'+id, function(){ //사진페이지가 로드가 안전히 되면 브라우저 화면 가운데로 띄우기 var obj = $('#photo_view'); var photo_view_height = ($(window).scrollTop() + ($(window).height() - obj.height())/2); var photo_view_width = ($(window).scrollLeft() + ($(window).width() - obj.width())/2); obj.css({ position: 'absolute', display : 'block', top : photo_view_height, left : photo_view_width }); set_coverup(); $('#photo_view').fadeIn(); }); } <a href="[removed]call_viewer('<?= $photo['id']; ?>');"><h2><?= $photo['subject']; ?></h2></a> 이걸 누르면 위의 자바스크립트 함수가 호출되는 그런 형태인데요... 링크 걸린 저기를 최초 눌렀을때 제대로 var photo_view_height 가 나오질 않는 것 같습니다. 아마 load 가 제대로 안된거 같아서 이벤트 미완으로 그런거 같은데요. 두번째 부터는 제대로 var photo_view_height 가 계산되는것 같습니다. 이거 혹시 로컬호스트에서 실행해서 너무 빨리 페이지가 로딩이 되어서 그런 현상이 일어나는걸까요? |
|||
다음글 | MAC OS에서 XAMPP셋팅문제 (4) | ||
이전글 | Controller 안에서 controller를 부를수... (2) | ||
변종원(웅파)
/
2012/09/04 22:03:01 /
추천
0
|
한대승(불의회상)
/
2012/09/05 09:39:56 /
추천
0
약간의 첨언을 하자면...
비동기라는 말은 요청한 데이터 응답 여부에 상관없이 다음 라인을 실행 한다는 뜻입니다. |
kirrie
/
2012/09/06 09:41:19 /
추천
0
저 코드 상으로는 문제가 없어보입니다. callback은 .load가 oncomplete된 상태에서만 수행되니까요.
전 좀 다른걸 여쭙고 싶은데, 혹시 로딩되는 html이 display:none이나 visibility:hidden 같은 style 속성을 갖고 있나요? dom에 삽입 완료된 엘리먼트들도 display 속성이 저렇게 되어 있으면 높이값을 가져올 수 없거든요. |
개떡
/
2012/10/15 18:41:22 /
추천
0
음 저 callback함수는 load가 완료 되었을때 호출되는 부분이라고 나와있는데 그렇담
비동기고 아니고와는 상관이 없어보여요 저 높이 구할때 쓰는 함수들이 jquery에서 제공하는 함수들인가요? |
milosz
/
2012/10/16 06:26:03 /
추천
0
onComplete된 상황은 해당 경로에서 html을 받아오는 것까지라 obj로 선언한 이미지의 사이즈를 받아오지 못합니다. 즉 사이즈를 계산하고 하는 부분은 html을 받아오고 나서 이미지까지 모두 불러온 이후에 사이즈를 계산할 수 있다는 얘기죠. setTimeout으로 값을 불러오는 시간을 조절하시거나
해당 obj에 event onload를 체크하셔서 해당 기능이 동작하게 하시면 될겁니다. |
그리고 파이어폭스-파이어버그의 NET 탭에서 보면 데이터 응답순서, 시간 등을
확인할 수 있습니다.
load로 읽어온 html 내용을 photo_view에 할당을 하는데 찾아보니 load는 비동기적으로
페이지를 로딩합니다. 그래서 로딩이 완전히 끝나기전에 아래 라인이 실행이 먼저 됩니다.
문서 참고 http://www.partner114.com/bbs/board.php?bo_table=B217&wr_id=10
높이 구하기전에 잠시 대기했다가 높이를 구하도록 해야할 것 같습니다.