Google Web Designer:检查initAd()是否已完成加载

时间:2017-08-30 21:28:34

标签: javascript jquery ajax google-web-designer

我正在尝试动态更改使用GWD创建的广告单元上的图片。

我有一个在handleWebComponentsReady()函数中调用initAd()后调用的JSON提要。

本地工作正常,广告初始化然后调用ajax来检索资产列表,然后使用jQuery将图像src换成新图像。

在部署到实时服务器之后,它将无法工作,看起来initAd()函数需要花费更长的时间才能加载,这会导致jQuery无法找到要操作的img标签。

我已经尝试将我的ajax调用放在handleAdInitialized()事件中,该事件是在广告初始化之后但在广告本身被渲染之前调用的,但事实并非如此。

我也尝试在ajax调用上添加一个超时,等待几秒钟才能进行有效的更改但不理想。

以下是我的Feed示例,非常简单

{
   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()何时完全完成,然后调用我的ajax?

任何帮助将不胜感激。

由于

2 个答案:

答案 0 :(得分:0)

如何调整case以检查response.image1,response.image2 ..是否为null,如果是,那么请等到值准备就绪

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 + '")');

答案 1 :(得分:0)

我不确定这是否是您想要的,但是gwdAd.initAd()是在文档上调度“ adinitialized”事件的函数。

List