我在页面标题中定义了所有adSlots,在JavaScript中我想根据页面上的位置刷新“部分”adSlots。
这就是我现在所拥有的:
googletag.cmd.push(function() {
slot1 = googletag.defineSlot('/1234/example', [[728, 90], 'gpt-divId1')
.addService(googletag.pubads());
slot2 = googletag.defineSlot('/1234/example', [[300, 250], 'gpt-divId2')
.addService(googletag.pubads());
slot3 = googletag.defineSlot('/1234/example', [[300, 250], 'gpt-divId3')
.addService(googletag.pubads());
googletag.pubads().enableSingleRequest();
googletag.pubads().collapseEmptyDivs();
googletag.enableServices();
然后我将该定义的插槽的名称放入每个div的data-gpt-slot
属性中,如下所示:<div attr="slot1" id="gpt-divId1">
。
在单独的JavaScript中,我正在尝试运行我的DOM,获取某个区域内所有data-gpt-slot
值的列表,并将它们添加到googletag.pubads().refresh();
如果我手动拨打googletag.pubads().refresh([slot1,slot2])
,这些广告会刷新,但如果我尝试通过jQuery构建该字符串,那么它就不会播放。
var gptdivs = [];
$('.myContainer .gpt-holder').each(function(){
gptdivs.push($(this).attr('data-gpt-slot'));
});
googletag.pubads().refresh([gptdivs]);
我怀疑我遗漏了$(this).attr('data-gpt-slot')
和slot1
,slot2
等属性的内容?
答案 0 :(得分:2)
问题是您尝试错误地使用刷新方法。它将实际的广告单元实例作为参数,而不仅仅是作为字符串的名称。
请改为尝试:
var adunits = {};
adunits['slot1'] = googletag.defineSlot('/1234/example', [[728, 90], 'gpt-divId1').addService(googletag.pubads());
adunits['slot2'] = googletag.defineSlot('/1234/example', [[300, 250], 'gpt-divId2').addService(googletag.pubads());
adunits['slot3'] = googletag.defineSlot('/1234/example', [[300, 250], 'gpt-divId3').addService(googletag.pubads());
然后您刷新adunits的代码变为:
var gptdivs = [];
$('.myContainer .gpt-holder').each(function(){
gptdivs.push(adunits[$(this).attr('data-gpt-slot')]);
});
googletag.pubads().refresh(gptdivs);
答案 1 :(得分:1)
我认为你在这里有一个深度阵列,导致你的问题
refresh([gptdivs])
试试
refresh(gptdivs)