2014-10-02 4 views
0

jQuery를 둘러싼 코드를 래핑하여 페이지의 요소를 지속적으로 확인하고 해당 요소가있을 때 정의 된 변수를 추가합니다. 이 경우 고유 ID가있는 특정 div를 찾고 정의 된 iframe을 추가하려고합니다. 여기 내가 가진거야.창 간격 - 페이지의 요소를 확인한 다음 페이지에 추가합니다.

window.myInterval = setInterval(function() { 
    $('#thankyou-container').append(iframehtml); 
clearInterval(window.myInterval); 
    } 
), 50); 

는 UPDATE :

여기에 나는 #에 감사합니다 컨테이너에 삽입하려고하지만 페이지가로드 한 후로드가있어 코드입니다. 내가 가지고있는 문제는이 광고 코드 (아래)가 브라우저를 새로 고침 할 때 페이지에만로드된다는 것입니다.

<script type="text/javascript"> 
vm_load({ 
"displayId": "12584", 
"publisherId": "33927", 
"campaign": "9380", 
"maxResults": "3", 
"areaofstudy": 
JSON.parse(jQuery.cookie('CategorySubCategorySpecialty')).CATEGORIES[0].text.replace('Business','1').replace('Criminal Justice & Legal','3').replace('Education','5').replace('Fine Arts & Design','2').replace('Health & Medicine','8').replace('Liberal Arts & Humanities','5').replace('Math, Science & Engineering','9').replace('Public Affairs & Social Sciences','13').replace('Religious Studies','5').replace('Technology','9').replace('Vocational Training',''), 
"md": "1" 
}); 
</script> 

jQuery를이 페이지에로드하고, vm_load 기능을 참조하는 자바 스크립트 파일이 코드 이전에로드됩니다 그것은 바로 표시되지 않는 이상한입니다.

코드 주위를 감싸고 페이지로드가 완료된 후에로드 할 필요가 있다고 생각합니다. 그것이 해결책일까요?

+0

간격이 한 번 실행 된 다음 즉시 지워집니다. '$ ('# thankyou-container')가 존재할 때만 그것을 지운다. –

+0

여기에 질문이 없습니다. – LcSalazar

답변

1

이이 문제를 해결해야한다 ...

window.myInterval = setInterval(function() { 
    var $container = $('#thankyou-container'); 
    if ($container.length) { 
     clearInterval(window.myInterval); 
     $container.append(iframehtml); 
    } 
), 50); 

그것은 요소가 존재하는지 확인합니다. 그렇지 않으면 아무 일도 일어나지 않습니다. 그 경우 간격을 지우고 추가합니다.

그러나, 나는

function containerAppend() { 
    var $container = $('#thankyou-container'); 
    if ($container.length) { 
     $container.append(iframehtml); 
    } 
    else { 
     setTimeout(containerAppend, 50); 
    } 
} 
containerAppend(); 

그것은 조금 더 복잡한의 ... 대신이 방법을 권하고 싶습니다하지만 시간이 걸립니다 계정 아무것도에 소요 있도록 대신 간격의 시간 제한을 사용합니다. 원래의 방법을 사용하면 요소 검색이 50ms보다 오래 걸릴 수 있으며 문제가 발생할 수 있습니다.

+0

요소 검색에 50ms가 걸리는 경우 OP에 더 큰 문제가 있다고 생각합니다. :) – epascarello

+0

그래서 두 번째 방법에 대해서는 언급하지 말았습니까? – Archer

+0

아니요, 두 번째 방법이 유효합니다. 일반적으로 사람들은 비동기 호출과 함께 두 번째 방법을 사용합니다. – epascarello