我需要暂停.each循环,以便加载iframe时间。有没有办法做到这一点?我没有运气就研究了回调等等。我不想要超时,因为我需要确保iframe src完全加载。
$.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 :(得分:3)
我假设,因为您的代码似乎表明情况就是这样,您正在更新相同的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);
});