2017-08-30 109 views
0

我試圖動態更改已使用GWD創建的廣告單元上的圖像。Google Web Designer:檢查initAd()是否已完成加載

我有一個JSON提要,在handleWebComponentsReady()函數中調用initAd()之後調用。

本地工作正常,廣告初始化,然後ajax調用檢索資產列表,然後我使用jQuery將圖像src換出到新圖像。

雖然部署到活動服務器,但它不會工作,它看起來像initAd()函數花費顯着更長的時間來加載這是jQuery的敲門效果無法找到img標籤操作。

我試過在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

怎麼樣把情況的同時檢查是否response.image1,response.image2 ..是空的,如果是這樣那麼等到有值準備

while (response.image1 == null && response.image2 == null && response.image3 == null && response.image4 == 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

Feed始終返回正確的數據。對不起,如果我不清楚,這是GWD初始化代碼花費太長時間。它動態地將圖像標籤添加到DOM,我需要等到發生這種情況後才能更改背景圖像 – SimonL