2011-12-20 5 views
0

페이지를 성공적으로 다시 게시 한 후 페이지로드 이벤트에서 fancybox 내부에 메시지를 표시하려고합니다.jQuery document.ready 이상한 동작

Page.ClientScript.RegisterStartupScript(GetType(), "Script", "ShowPopup('popup');", true); 

여기 javsacript 기능 ShowPopup입니다 :

function showPopup(p) { 
    ShowFancyBoxDiv("#divMessage", 50, 300); 
} 

는하지만 우리를 우리는 .cs 파일에 ASP.NET.Here의 코드 Page.RegisterClientScript 방법을 사용하여 페이지에 스크립트를 등록 이렇게하면 창보기의 첫 번째 페이지 만 회색으로 표시되고 아래로 스크롤하면 페이지의 나머지 부분은 여전히 ​​활성 상태로 유지됩니다.

하지만 아래에 표시된 것처럼 타이머를 추가하면 모든 것이 잘 작동합니다.

$(document).ready(function() { 
    setTimeout(function() { 
     ShowFancyBoxDiv("#divMessage", 50, 300); 
     $("#fancybox-close").css("display", "none"); 
    }, 1000); 
}); 

아무도 여기에서 무슨 일이 일어나는지 설명 할 수 있습니까? document.ready는 자동으로 문서가 완전히로드되었는지 확인해야합니다. 그런 다음 왜 타이머 함수를 사용해야합니까? 감사.

답변

0

이미지와 같이 요소가로드 될 수 있습니다. Ready는 DOM이 준비되었음을 의미합니다. 당신이 진술 한대로 모든 것이로드되었음을 의미하지는 않습니다. 원하는 경우 .load을 사용하십시오.

$(window).load(function() { 
    //code 
}); 

이 웹 사이트에는 준비가되어 있습니다.

http://web.enavu.com/daily-tip/daily-tip-difference-between-document-ready-and-window-load-in-jquery/

+0

DID NOT WORK. 당신은 다음과 같은 것을 의미했습니다 : $ (document) .load (function() {ShowFancyBoxDiv ("# divMessage", 50, 300);}); 하지만 이것을 사용하면 왜 그런지 모르지만 ShowFancyBoxDiv()는 해고되지 않습니다. ??? 게다가, 1 초의 타임 아웃을 사용하고 있어도 페이지의 다양한 요소들이로드되고 있지만 (firebug의 'net'탭을 통해 검사 할 때) fancybox가 올바르게 표시됩니다. 그래서 나는 그 문제가 다른 것이어야한다고 믿는다. – MrClan

+0

@PratikChandra - 죄송합니다. 제 코드에 오류가 있습니다. 대신 $ (window) .load를 사용해보십시오. – mrtsherman

+0

그 사람은 고마워. – MrClan