2013-05-17 27 views
0

我需要暂停.each循环,给iframe加载时间。有没有办法做到这一点?我研究了回调等等,但都没有运气。我不想要超时,因为我需要确保iframe src完全加载。jQuery。每个循环暂停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

您可以挂钩一个onrame上的onload事件,但由于ajax调用是异步的,因此不能暂停中间调用。如果您需要等待,那么AJAX可能不是正确的工具。 –

+0

你不能暂停$ .each循环。 –

回答

3

我假设,因为你的代码似乎表明这种情况下,你正在更新的相同的I帧来源,而不是一个不同。无论采用哪种方式,您都可以修改下面的代码,但它适用于相同的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大声笑感谢戴夫抱歉延迟的答案... – no1uknow