jQuery .each循环暂停iframe完全加载

时间:2013-05-17 18:28:25

标签: jquery ajax iframe load each

我需要暂停.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.


    });

  }
});

1 个答案:

答案 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);
 });