0

.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.


    });

  }
});
4

1 に答える 1

3

あなたのコードはこれが事実であることを示しているように見えるので、別のソースではなく同じ iframes ソースを更新していると思います。どちらの方法でも、以下のコードを変更できますが、同じ 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);
 });
于 2013-05-17T19:01:23.300 に答える