在单页面Web应用程序中显示相同的dfp广告

时间:2013-11-11 06:22:24

标签: javascript ads single-page-application google-dfp

我有一个包含dfp广告的单页网页应用程序。我有两个dfp adunits,我可以将它们放在内容之间,这是一个特定类别的文章列表。

当我点击其他类别时,它只会加载不同类别的文章(不会更改地址栏中的网址)并触发相同的广告。这就像在同一页面上触发广告一样。

广告不会第二次出现,这是因为您无法在同一页面上使用相同的广告单元。

由于我不能使用dfp提供的刷新功能,因为我每次都会重建DOM,有什么方法可以做到这一点吗?

3 个答案:

答案 0 :(得分:1)

这个问题几乎没有。 dfp插件以及正常的googletag实现应适用于单页应用,只需要满足两个要求

  1. enableSingleRequest不应设置为true。如果是Matt的dfp插件,你应该传递enableSingleRequest:false,这样他就不会将它设置为true。 这是因为如果您将其设置为true,则无法在同一页面上提出更多请求以获取广告。另外enableSingleRequest(false)也会失败。

  2. 当您动态触发广告时,无需重新加载页面;确保从放置广告的新鲜容器开始。确切原因仍未得到确认,但似乎这就是googletag内部运作的方式。

  3. 如果您有任何进一步的评论,请添加。

答案 1 :(得分:0)

如果您使用的是jQuery,请查看我制作的plugin封装DFP,并允许您在单页应用中轻松使用它。

这是一个使用turbolinks的演示,它类似于您的单页应用程序:

http://coop182.github.io/jquery.dfp.js/dfptests/demo1.html

还有其他问题请告诉我。

编辑:这是另一个单页示例 - http://coop182.github.io/jquery.dfp.js/dfptests/spa.html

答案 2 :(得分:0)

这样做很难:

function myGoogleTagLoaderFn(callback) {
    // reset googletag lib
    window.googletag = null;

    // we're using requirejs, so we have to do this as well
    window.requirejs.undef('http://www.googletagservices.com/tag/js/gpt.js');

    myRequireOr$getScriptFn('http://www.googletagservices.com/tag/js/gpt.js', function success() { callback(); });
}

不要担心在每个页面加载时加载库,这与非单页面站点中的相同,并且lib发送合理的缓存头。当然,缺点是每次都会重新评估脚本。好处是你可以用这种方式使用singleRequest模式。