2013-10-12 69 views
0

刷新我在我的頁面的標題和JavaScript中定義了所有的廣告位,我想根據廣告位的位置頁。我如何定位哪些廣告我想用GPT

這就是我目前所面對的:

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')slot1slot2等屬性?

回答

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()); 

然後你的代碼,以刷新的AdUnit變爲:

var gptdivs = []; 
$('.myContainer .gpt-holder').each(function(){ 
    gptdivs.push(adunits[$(this).attr('data-gpt-slot')]); 
}); 
googletag.pubads().refresh(gptdivs); 
+0

我不得不將adunits更改爲全局,因爲我的刷新代碼位於單獨的文件中,但正確無誤 - 謝謝。 –

1

我認爲你有一個深刻的陣列這裏,造成您的問題

refresh([gptdivs]) 

試試看

refresh(gptdivs) 
+0

不幸的是,我試過幾個小時前無濟於事。 –

相關問題