2012-01-23 7 views
4

PHP가 큰 div를 출력하는 페이지가 있는데, 내부에 많은 구성 요소가 있습니다. 그 div를 처리 할 JS가 거의 즉시 시작되지만 bigDiv 로딩과 관련된 타이밍 문제와이를 처리하는 스크립트가 있습니다.jquery .ready() 함수가 대기하는 데 걸리는 시간은 얼마입니까?

그래서,이 같은 코드가 bigDiv 표시하는 데 시간이 오래 걸리는 경우

var bigDiv = $(document).find('#bigDiv'); 
bigDiv.ready(function{ 
    //some code here 
}); 

지금 내 질문에, 얼마나 ready() 기능 대기 않습니다()가 준비가 그것을 처리하기 위해 적용? bigDiv이 전혀 나타나지 않으면 어떻게됩니까? bigDiv의 콘텐츠 길이가 0보다 경우 내가 볼려고 처음

var waitTimer = 0; 
var lodTmout = 2000; 
function chkDataLod(){ 
    var bigDiv = $pH(document).find('#bigDiv'); 
    if(bigDiv.length > 0){//find if bigDiv has content 
     bigDiv.ready(function(){//wait for bigDiv to load it's contents completely 
      //some code here 
     }); 

    }else{ 
     //chk for bigDiv after every 500 msec for 2000 msec 
     if(waitTimer === lodTmout){ 
      return false; 
     }else{ 
      waitTimer += 500; 
      setTimeout('chkDataLod();',500); 
     }  
    } 
}; 

function _init(){ 
    chkDataLod(); 
} 

_init(); 

: 그래서

기다리고 스크립트를 피하기 위해, 내가 타임 아웃을 적용,

따라서 나는이 같은 다른 접근 방식을 선택했다 . '불완전하게로드 된'bigDiv가 표시 될 때 문제가 발생했습니다. 그래서 다시 .ready() 함수를 추가했습니다. 완전히로드 될 때까지 시작하지 않으려는 bigDiv에 애니메이션 기능이 있습니다.

bigDiv은 CDN에서로드되므로로드 타이밍이 다양합니다. 하루는로드하는 데 약 5 초가 걸렸습니다. 내 자신의 접근법을 보면 문제가 있다는 것을 안다. 나는 setTimeout과 ready를 사용하고있다. 그러나 나는 준비가 어떻게되어 있는지를 확신 할 수 없다. 나는 그것의 문서를 보려고했지만 그것을 명확하게 찾을 수 없었다.

어떻게하면이 문제를 해결할 수 있습니까 ??

+0

이 div는 ajax를 통해로드되고 있습니까? 왜 jquery document.ready를 사용하여 이것을 처리하지 않는지 나는 명확하지 않습니다. – kinakuta

+0

"$ (문서) .ready (함수() {});" 모든 페이지 컨트롤이 생성 된 후에 시작할 수 있습니다. 그러나 브라우저에서 다른 이야기를 렌더링하는 것에 대해 이야기하고 있다면 –

+0

@kinakuta - IT가 로딩되는 즉시 bigDiv를 보여주기 때문에 document.ready()를 사용할 수 없습니다. 너무 많은 시간이 걸릴 수 있으므로 전체 페이지가로드 될 때까지 기다릴 수 없습니다. – Shades88

답변

0

클라이언트 인터넷의 속도는 얼마나되는지, bigDiv의 콘텐츠 크기 및 클라이언트 컴퓨터의 속도에 따라 다릅니다.

+0

그것은 무엇을 의미합니까? 나는 클라이언트 인터넷 속도가 느릴 수 있다는 것을 알고있다. 그래서 나는이 질문을한다. – Shades88

1

가장 쉬운 방법은 요소의 닫는 태그 바로 뒤에 코드를 실행하는 것입니다. 이

<div id='bigDiv>....</div> 
<script> 
// do whatever you want to do with div 
</script> 

PS처럼 : 또는 일부 간격을두고 DIV 후 모든 요소에 액세스하려고 할 수 있습니다. 그것이 존재한다면 - 귀하의 div 준비가되었습니다.

+0

나는 똑같은 말을하고, $ ('# bigDiv')가 이미 비어 있지 않은 세트를 반환하면 ready()를 기다릴 필요가 없다고 덧붙인다.당신이) (준비해야 할 유일한 시간은 $ ('# bigDiv')가 성공 있는지 확인하는 것입니다, 그리고 스크립트가 (이상적으로, 또는 태그 아래) 요소 아래에 귀하의 페이지를 다시 정렬하는 것이 좋습니다 – Jason

+0

이 솔루션은 현재 내 문제의 범위가 아닙니다. bigDiv로해야하는 일은 내가 첨부 할 js 파일 내에 포함시켜야합니다. 따라서 두 가지 일이 발생하고 비동기 적으로 발생할 수 있습니다. 1. bigDiv 데이터로드 2. 큰 div 데이터를 처리하기 위해 js로드. 이제 내가 포함하고있는 js는 bigDiv에만 관련이 없으며 다른 기능도 있습니다. 내가 왜 js를 따로두고 있는지 의심 할 것이기 때문에 나는 그것을 깨끗하게 처리했다. – Shades88

+0

@ Shades88 귀하의 문제가 무엇인지 분명하지 않습니다. 브라우저가 div의 닫는 태그를 얻을 때까지 jQuery는 요소가 DOM 구조에 없으므로 빈 선택을 반환합니다. 따라서 필요한 요소의 가용성을 정기적으로 확인해야합니다. 준비 기능이 없어도. – Cheery

0

var d = new Date(); console.log(d.getTime()); 

jQuery를 준비 기능 후에 같은 일을 추가하고

CompAir 사의 페이지로드 시간이 시간

를 참조 스크립트 태그의 첫 줄에 추가하려고하면 notic 것이다 ASA 마지막 이미지로드 다음 밀리 초 매우 실행

+0

그래서 내 콘텐츠가로드되지 않으면 내 페이지가 정지됩니다. 준비가 계속해서 확인되기 때문입니다. 콘텐츠를 다음로드되지 않을 경우 – Shades88

+0

심지어 JQuery와 내 컨텐츠로드 내 CSS를 din't와 자바 스크립트 파일을 – mikul

+0

아니 아니, 내 JS 별도로 제공하고 DIV 내용이 개별적으로 온로드 어디서 보지 를로드하지 않습니다. 내 div 콘텐츠가 오지 않는다면 내 js와 css가 오지 않은 경우는 아닙니다. – Shades88

관련 문제