2013-05-17 2 views
0

Мне нужно приостановить цикл .each, задав время iframe для загрузки. Есть ли способ сделать это? Я исследовал обратные вызовы и т. Д. Без везения. Я не хочу таймаут, потому что мне нужно убедиться, что iframe src загружается полностью.jQuery .each loop pausing for 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 может оказаться не лучшим инструментом для использования. –

+0

вы не можете приостановить цикл $ .each. –

ответ

3

Я предполагаю, что, так как ваш код, кажется, показывают, что это так, что вы обновляете источник же IFrames, а не другой. В любом случае, вы можете изменить код ниже, но он предназначен для одного и того же 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