2013-06-20 39 views
2

我確信之前已經詢問和回答過這個問題,但是我一直無法找到答案,所以我再次提問。動態DFP Javascript

我試圖實施Google DFP。我能夠動態創建正在投放廣告的內嵌JavaScript,因此我知道應該正確配置管理員端。

我們沒有在我們的應用程序的任何內聯JS了,所以我想用JS動態地構建出來,我沒有多少運氣。

我粘貼了我的JS here。值得注意的是,最上面的部分(在/////!EVENTS之前)立即加載,而底部部分在$(document).ready()調用中加載,以防可能是罪魁禍首。

帶代碼的想法是,每個廣告div都具有包含廣告的url,size和id的數據屬性。使用此I循環遍歷每個添加,定義插槽,一旦定義了所有插槽,我將顯示所有插槽,一旦發生這種情況,我會調用剩餘的DFP功能。聽起來像它應該工作(無論如何),但它不是。

每個console.log()調用都按預期發生,當我檢查最後一次調用記錄的googletag對象時,調試日誌包含如下條目:「Created slot:/ [userid]/[ad div id] 「,」Google服務JS加載「,」創建的服務:publisher_ads「,」帶插槽/ [用戶ID]/[廣告單元ID]的相關publisher_ads服務「;爲每個記錄。

我不知道是否可能是谷歌服務JS或創建服務呼叫發生的每個廣告單元導致的問題或預期的行爲,但沒有被記錄到除了我已經記錄了哪些控制檯有不似乎有任何跡象表明我發現有什麼問題,只是沒有投放廣告。

在文檔中以及我工作的實現版本中,有顯示調用的內聯腳本。我不確定是否可能需要內聯處理,並以某種方式將結果顯示在調用它的腳本標記的父級中,但即使在內聯顯示調用時它也不起作用,更少的日誌記錄正在進行,這導致我相信defineSlot()步驟中某些內容不能正常工作,但正如我所提到的,googletag對象的調試日誌確實表明該插槽已定義。

在我的網絡窗格中,似乎有兩個Google致電http://partner.googleadservices.com/gampad/google_ads_gpt.jshttp://www.googletagservices.com/tag/js/gpt.js,它會返回所需的Javascript,但這些是唯一致電Google的電話(與廣告有關,還有其他分析電話)和這個頁面上有4個廣告應該加載,所以如果廣告實際上正在嘗試提供服務,我預計會有更多的通話。

不用說我不知所措。我敢肯定,答案正在我的面前盯着我,但我並沒有在DFP廣告管理系統或廣告方面做過多少工作,所以我不知道還有哪些方面需要追蹤。

在此先感謝您的任何方向。

回答

2

我已經有一個工作腳本,我很確定你做了什麼之後。

https://github.com/coop182/jquery.dfp.js

你應該能夠只是從看你codepen得到my script一些指點,我已經發現了一個問題是,你沒有使用廣告單元格這DFP將實際的DOM ID需要。任何你正在使用:

$(that).attr('data-id'); 

應該是:

$(that).attr('id'); 

googletag.display的調用也需要在後

googletag.pubads().enableSingleRequest(); 
googletag.enableServices(); 
+0

我其實有ID的數據屬性,以及在身份證本身。將DOM添加到codepen會有幫助。我想它是多餘的重複,但我試圖保留我將在我的腳本中使用的數據附加到數據屬性,並使用id屬性作爲選擇器。 我已經將這些調用移動到了顯示調用之上,它似乎已經改變,但仍然沒有渲染。現在,調用Google_ads_gpt中的http://pubads.g.doubleclick.net/gampad/ads會返回錯誤400.在debug_log中,它會提取gpt,延遲每個廣告,接收gpt,爲每個廣告調用fillslot。沒有呈現廣告。 – BrandonThorn

+0

我剛剛放在你的腳本中,它效果很好。我在腳本上方的註釋中添加了MIT文本。我試着瀏覽它,並試圖看看我是否可以發現我做錯的東西,但似乎最簡單的做法是使用它而不是滾動我自己的東西。我不知道我們可能會利用哪些未來選項,而且您似乎已經考慮了目標以及我還沒有開始考慮的事項。感謝您的快速回復和偉大的腳本。它是一個巨大的幫助。 – BrandonThorn

+0

很高興它很適合你......如果它現在做得比你需要的多一點,那麼可以自由地將它分解出來,然後將其剝離下來......但是,定位的東西非常有用! –