2013-05-17 4 views
0

로드 할 iframe 루프를 일시 중지해야합니다. 이것을 할 수있는 방법이 있습니까? 콜백 등을 조사해 보았습니다. iframe src가 완전히로드되었는지 확인해야하므로 시간 초과를 원하지 않습니다.jQuery .each 루프가 완전히로드되도록 iframe을 일시 중지합니다.

$.ajax({ 
    type:'post', 
    traditional: true, 
    url: '/Reportedit/exportPdfCharts', 
    dataType: 'json', 
    cache: 'false', 
    contentType: 'application/json; charset=utf-8', 
    success: function(data) { 

    $.each(data, function() { 

     var url = "/Reportedit/createonechart"; 

     $("#iframe-chart").attr("src", url); 

     //NEED TO PAUSE HERE UNTIL iframe source has completely loaded. 


    }); 

    } 
}); 
+0

당신이를 연결 할 수있는 배열의 끝에 도달 할 때까지 반복적으로로드 이벤트 함수에서 같은 함수를 호출 할 수 있습니다 onload 이벤트는 iframe에서 발생하지만 Ajax 호출은 비동기식이기 때문에 중간 호출을 일시 중지 할 수 없습니다. 기다려야한다면 AJAX가 올바른 도구가 아닐 수도 있습니다. –

+0

$ .each 루프를 일시 중지 할 수 없습니다. –

답변

3

코드가 이러한 경우를 나타내는 것으로 보이므로 다른 iframe 소스가 아닌 동일한 iframe 소스를 업데이트하고 있다고 가정합니다. 어느 쪽이든, 아래 코드를 수정할 수는 있지만 같은 iframe에 대한 것입니다.

당신은 부하 이벤트 원본을 업데이트 할 때마다 해고 감지하고 당신이

$.ajax({ 
    ... 
    success: function(data) { 
     loadFrame(data, 0); 
    } 
}); 


function loadFrame(arr, i) { 
    //tell it what to do when the frame loads, but just once, since we 
    //are incrementing i 
    $('#iframe-chart').once('load', function(){ 
    if (i<arr.length) { loadFrame(arr, i++); } 
    }); 
    var url = "/Reportedit/createonechart"; 
    //you'll need some logic here to figure out which url to load 
    $("#iframe-chart").attr("src", url); 
}); 
+0

Stackoverflow LOL 덕분에 Dave가 지연된 대답을 유감으로 생각할 때까지 투표 할 수 없었습니다 ... – no1uknow

관련 문제