动态DFP Javascript

时间:2013-06-20 14:29:08

标签: javascript advertising google-dfp

我确定之前已经问过并回答了这个问题,但我还没有找到答案,所以我再次提问。

我正在尝试实施Google DFP广告管理系统。我能够动态创建投放广告的内联JavaScript,因此我知道应该正确配置管理员端。

我们的应用程序中没有任何内联JS,因此我尝试使用JS动态构建它并且我没有多少运气。

我已粘贴了我的JS here。值得注意的是,顶部(在/////!EVENTS之前)立即被加载,而底部部分被加载到$(document).ready()调用内,以防可能是罪魁祸首。

代码的想法是每个广告div都有数据属性,其中包含广告的网址,大小和ID。使用这个我遍历每个添加,定义插槽,一旦定义了所有插槽,我显示所有插槽,一旦发生这种情况,我调用剩余的DFP功能。听起来它应该工作(无论如何对我来说),但事实并非如此。

每个console.log()调用都按预期进行,当我检查最后一次调用记录的googletag对象时,调试日志包含以下条目:"创建的插槽:/ [userid] / [ad div id]"," Google服务JS已加载","已创建服务:publisher_ads","关联的publisher_ads服务与广告位/ [用户ID] / [广告单元ID] &#34 ;;对于每条记录。

我不确定Google服务JS或为每个广告单元创建的服务调用是否会导致问题或预期的行为,但除了我记录的内容之外,没有任何内容记录到控制台似乎没有任何迹象表明我发现某些事情出了问题,它只是没有投放广告。

在文档和我工作的实现版本中,有内联脚本执行了显示调用。我不确定这是否必须以内联方式处理,并以某种方式将结果显示在调用它或其他内容的脚本标记的父级中,但即使我在内联显示调用它也不起作用,没有更多或更少的日志记录,这让我相信在defineSlot()步骤中某些东西没有正常工作,但就像我提到的那样,googletag对象的调试日志确实指出了插槽的定义。

在我的网络窗格中,似乎有两次拨打电话给http://partner.googleadservices.com/gampad/google_ads_gpt.jshttp://www.googletagservices.com/tag/js/gpt.js,后者会返回所需的Javascript,但这些是对Google进行的唯一调用(与广告相关,还有其他分析调用)并且此页面上有4个广告应加载,因此如果广告实际上是在尝试投放,我预计会有更多来电。

毋庸置疑,我不知所措。我确定答案正在盯着我,但我对DFP广告系列做了很多工作,或者根本没有广告,所以我不知道还有什么地方可以追踪这一点。

提前感谢任何方向。

1 个答案:

答案 0 :(得分:2)

我实际上有一个工作脚本,我很确定你所追求的是什么。

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

您应该能够从my script获得一些指示,但仅仅从查看您的codepen,我发现的一个问题是您没有使用DFP需要的adunit div的实际DOM ID。您正在使用的任何地方:

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

应该是:

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

googletag.display的来电也需要在

之后
googletag.pubads().enableSingleRequest(); 
googletag.enableServices();