我正在尝试动态更改使用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?
任何帮助将不胜感激。
由于
答案 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