jQuery。每个循环暂停iframe以完全加载
问题描述:
我需要暂停.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.
});
}
});
答
我假设,因为你的代码似乎表明这种情况下,你正在更新的相同的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
您可以挂钩一个onrame上的onload事件,但由于ajax调用是异步的,因此不能暂停中间调用。如果您需要等待,那么AJAX可能不是正确的工具。 –
你不能暂停$ .each循环。 –