我正在尝试动态更改使用 GWD 创建的广告单元上的图像。
我有一个在handleWebComponentsReady() 函数中调用initAd() 后调用的JSON 提要。
在本地这工作正常,广告初始化,然后进行 ajax 调用以检索资产列表,然后我使用 jQuery 将图像 src 换成新图像。
但是,在部署到实时服务器之后,它就无法工作了,看起来 initAd() 函数加载时间要长得多,这会产生 jQuery 无法找到要操作的 img 标签的连锁效应。
我尝试将我的 ajax 调用放在 handleAdInitialized() 事件中,该事件是在广告初始化之后但在广告本身呈现之前调用的,但似乎并非如此。
我还尝试在 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() 何时完全完成然后调用我的 ajax?
任何帮助,将不胜感激。
谢谢