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

Javascript 在单页web应用程序中显示相同的dfp广告,javascript,ads,single-page-application,google-dfp,Javascript,Ads,Single Page Application,Google Dfp,我有一个包含dfp广告的单页web应用程序。我有两个dfp AdUnit,我正在启动,它们放在内容之间,这是一个特定类别的文章列表 当我点击另一个类别时,它只是加载不同类别的文章(不改变地址栏中的url)并触发相同的广告。所以这就像触发同一页面上的广告一样 广告不会第二次出现,这是因为你不能在同一页上使用相同的成人 由于我不能使用dfp提供的刷新功能,因为我的DOM每次都会被重建,有什么方法可以做到这一点吗?如果您使用的是jQuery,请查看我制作的包装dfp并允许您在单页应用程序中非常轻松地使

我有一个包含dfp广告的单页web应用程序。我有两个dfp AdUnit,我正在启动,它们放在内容之间,这是一个特定类别的文章列表

当我点击另一个类别时,它只是加载不同类别的文章(不改变地址栏中的url)并触发相同的广告。所以这就像触发同一页面上的广告一样

广告不会第二次出现,这是因为你不能在同一页上使用相同的成人


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

如果您使用的是jQuery,请查看我制作的包装dfp并允许您在单页应用程序中非常轻松地使用它的工具

这是一个使用TurboLink的演示,与您的单页应用程序类似:

还有问题就告诉我


编辑:这里是另一个单页示例-

从这个问题中可以得出一些结论。 dfp插件以及正常的Google标签实现应该适用于一个单页应用程序,只需满足两个要求

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

  • 当您动态触发广告时,即不重新加载页面;确保从放置广告的新鲜容器开始。具体原因尚不确定,但似乎这是谷歌标签内部的工作方式

  • 如果您有任何进一步的意见,请添加。

    用艰难的方式:

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

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

    上面的演示如何成为单页应用程序。?。单击该链接可转到另一个页面。查看上述演示的修改版本。当你点击刷新这里;它试图创造相同的广告;但未能提供广告。最初的演示肯定是一个单页应用程序。。。turbolinks处理单击并将url更改推送到浏览器。。。所以,尽管它看起来像是在换页面,但事实并非如此。无论如何我已经添加了另一个演示,应该提供一个更好的例子。。。你做的那个不起作用,因为你正在更改id并清空div…谢谢你的演示。我还有一个困惑。当我从演示中删除enableSingleRequest:false时,它不会触发新广告。您能告诉我为什么使用enableSingleRequest吗?DFP使用enableSingleRequest选项一次获取当前页面的所有广告。。。当使用此选项时,不可能为同一页面获取更多广告。。。我的插件默认将enableSingleRequest设置为true,因为在大多数情况下,它更有效,但对于在同一页面上生成和获取新广告的单页面应用,您将始终需要将enableSingleRequest设置为false;你说我上面的演示不起作用,因为我正在清空div并更改id。这是谷歌标签实现本身的限制吗?我们不能这样使用它?