2016-12-08 51 views
0

有人可以幫我處理Google GPT googletag.cmd隊列重新排序問題嗎?Google GPT - googletag.cmd隊列重新排序

(1)在家裏HTML網頁,我有這樣的:

googletag.cmd.push(function() { defineSlot1(); }); 
googletag.cmd.push(function() { defineSlot2(); }); 
googletag.cmd.push(function() { defineSlot3(); }); 
googletag.cmd.push(function() { defineSlot4(); }); 

(2)連接JS,我動態添加:

googletag.cmd.push(function() { defineSlot5(); }); 

(3)所以現在在隊列googletag.cmd的,像這樣的順序:

[slot1, slot2, slot3, slot4, slot5]; 

我的問題是,如何移動slot5到所述第二位置之後slot1中,像這樣:

[slot1, slot5, slot2, slot3, slot4]; 

https://developers.google.com/doubleclick-gpt/reference, googletag.commandArray僅具有推(F)的方法,並且是googletag.cmd的不是標準陣列。

如何做到這一點?謝謝。

回答

0

Google GPT庫以異步模式加載,它最初定義爲googletag.cmd作爲常規數組。

<script type='text/javascript'> 
var googletag = googletag || {}; 
googletag.cmd = googletag.cmd || []; 
(function() { 
var gads = document.createElement('script'); 
gads.async = true; 
gads.type = 'text/javascript'; 
var useSSL = 'https:' == document.location.protocol; 
gads.src = (useSSL ? 'https:' : 'http:') + 
'//www.googletagservices.com/tag/js/gpt.js'; 
var node = document.getElementsByTagName('script')[0]; 
node.parentNode.insertBefore(gads, node); 
})(); 
</script> 

當主庫被下載的(它發生在頁面呈現平行),它最初定義的數組轉換成自定義對象(https://developers.google.com/doubleclick-gpt/reference#googletag.CommandArray),所以你確實不能對其進行修改。

回到你的問題:

  1. 如果使用 googletag.pubads().enableSingleRequest()https://developers.google.com/doubleclick-gpt/reference#googletag.PubAdsService_enableSingleRequest)所有廣告位的將被查詢並在第一的googletag.display(...)調用顯示。

  2. 如果不使用enableSingleRequest單個查詢將在每次無論其定義順序

你叫googletag.display(…)特定廣告位時,發送考慮第1頁第2頁和我不不明白爲什麼你會關心插槽定義的順序。 無論如何,如果你真的需要它,你可以定義自己的隊列變量

window.custom_cmd = []; 

和按如下方式使用它,而不是googletag.cmd整個頁面,這樣它看起來:你的後

custom_cmd.push(function() { 
// regular defineSlot(…) calls 
}); 

,然後某處附加的js文件加載只是

// reorder it or whatever else 
… 
// copy your queue into the regular queue 
for (var i = 0; i < custom_cmd.length; i++) { 
    googletag.cmd.push(custom_cmd[i]); 
} 

該代碼會觸發廣告,呼籲