2017-08-30 18 views
0

GWDで作成された広告ユニットの画像を動的に変更しようとしています。Google Web Designer:initAd()の読み込みが完了したかどうかの確認

handleWebComponentsReady()関数でinitAd()が呼び出された後に呼び出されるJSONフィードがあります。

これは正常に動作し、広告は初期化され、アセットのリストを取得するためにajax呼び出しが行われます。次に、jQueryを使用して画像srcを新しい画像に置き換えます。

ライブサーバーにデプロイした後でも、動作しません.jQueryのノックオフ効果を持つロードには、initAd()関数の読み込み時間がかなり長くかかるようです。

私は、広告が初期化された後に広告自体がレンダリングされる前に呼び出されることを意味するhandleAdInitialized()イベントの中に自分のajax呼び出しを配置し​​ようとしましたが、これはそうではないようです。

また、変更を行う前に数秒待つようにajax呼び出しでタイムアウトを追加しようとしましたが、これはうまくいきましたが、理想的ではありません。ここで

が私のフィードのサンプルである、それは

{ 
    image1: "assets/img1.jpg", 
    image2: "assets/img2.png", 
    image3: "assets/img3.png", 
    image4: "assets/img4.png", 
    image5: "assets/img5.png" 
} 

そして、ここではイベントが

function handleWebComponentsReady(event) { 
    // Start the Ad lifecycle. 

    setTimeout(function() { 
     gwdAd.initAd(); 
    }, 0); 


    } 

    /** 
    * Handles the event that is dispatched after the Ad has been 
    * initialized and before the default page of the Ad is shown. 
    */ 
    function handleAdInitialized(event) { 
    $.ajax({ 
     url: "link-to-feed", 
     jsonpCallback: "callback", 
     dataType: "jsonp", 
     async: false, 
     success: function(response) { 
      console.log(response); 

      $('#img1').css('background-image','url("' + response.image1 + '")'); 
      $('#img2').css('background-image','url("' + response.image2 + '")'); 
      $('#img3').css('background-image','url("' + response.image3 + '")'); 
      $('#img4').css('background-image','url("' + response.image4 + '")'); 
      $('#img5').css('background-image','url("' + response.image5 + '")'); 

     }, 
     error: function(response){ 
      console.log("error"); 
     } 
    }); 
    } 

ている非常に簡単ですinitAd()が完全に終了し、その後、呼び出したときを検出する方法はあります私のアヤックス?

ご協力いただければ幸いです。

おかげ

答えて

0

値がある値が座っている

while (response.image1 == null && response.image2 == null && response.image3 == null && response.image4 == null) {}; 

後に準備があるまで、そうして待っていればresponse.image1、response.image2 ...は、nullの場合ケースながら置くことについて確認する事項

$('#img1').css('background-image','url("' + response.image1 + '")'); 
      $('#img2').css('background-image','url("' + response.image2 + '")'); 
      $('#img3').css('background-image','url("' + response.image3 + '")'); 
      $('#img4').css('background-image','url("' + response.image4 + '")'); 
      $('#img5').css('background-image','url("' + response.image5 + '")'); 
+0

フィードは常に正しいデータを返します。申し訳ありませんが、わからない場合は、GWDのinitコードが長すぎます。 DOMに画像タグを動的に追加するので、フィードが背景画像を変更する前にこれが起こるまで待つ必要があります – SimonL

関連する問題