2013-05-17 35 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