此代码与在我的网站上投放广告有关。顶部是定义每个广告位的位置。然后,我将具有可以加载任何单个广告的功能。此功能需要提取顶部定义的适当的广告位变量,但似乎不起作用。
var slot1;
googletag.cmd.push(function() {
slot1 = googletag.defineSlot('/50970423/ffn-hb-rect-1', [[300, 250]], 'div-1')
.addService(googletag.pubads());
googletag.pubads().disableInitialLoad();
googletag.pubads().enableSingleRequest();
googletag.enableServices();
});
var slot2;
googletag.cmd.push(function() {
slot2 = googletag.defineSlot('/50970423/ffn-hb-rect-ex', [[300, 250]], 'div-2')
.addService(googletag.pubads());
googletag.pubads().disableInitialLoad();
googletag.pubads().enableSingleRequest();
googletag.enableServices();
});
function refreshBid(adUnitName) {
if(adUnitName == '/50970423/ffn-hb-rect-1'){
var slot_to_load = slot1;
}
else if(adUnitName == '/50970423/ffn-hb-rect-ex'){
var slot_to_load = slot2;
}
pbjs.que.push(function() {
pbjs.requestBids({
timeout: PREBID_TIMEOUT,
adUnitCodes: [adUnitName],
bidsBackHandler: function() {
pbjs.setTargetingForGPTAsync([adUnitName]);
googletag.pubads().refresh([slot_to_load]);
}
});
});
}
问题是,如果我将结尾处的那一行更改为googletag.pubads()。refresh([slot1]);它将完美运行(当然,由于它是经过硬编码的,因此仅适用于第一个广告位,因此这不是解决问题的方法)。有任何想法吗?谢谢!
答案 0 :(得分:1)
您要在if / else语句中定义slot_to_load
变量 内,因此底行slot_to_load
是undefined
。在if / else之外定义变量,然后在其中设置其值,您的代码将起作用:
function refreshBid(adUnitName) {
var slot_to_load;
if(adUnitName == '/50970423/ffn-hb-rect-1'){
slot_to_load = slot1;
}
else if(adUnitName == '/50970423/ffn-hb-rect-ex'){
slot_to_load = slot2;
}
pbjs.que.push(function() {
pbjs.requestBids({
timeout: PREBID_TIMEOUT,
adUnitCodes: [adUnitName],
bidsBackHandler: function() {
pbjs.setTargetingForGPTAsync([adUnitName]);
googletag.pubads().refresh([slot_to_load]);
}
});
});
}