【问题标题】:google dfp pubads().refresh() not working as expectedgoogle dfp pubads().refresh() 没有按预期工作
【发布时间】:2012-11-08 17:33:13
【问题描述】:

我正在使用 Google DFP 中的一些新功能,但无法单独添加来刷新它。我可以刷新页面上的所有广告,但不能只刷新一个。

我一直在尝试以下代码来让一个添加刷新没有运气:

   var slot1 = googletag.display('/6900315/myad2', [300, 250], 'div-2');
        googletag.pubads().refresh([slot1]);

任何帮助将不胜感激!

完整来源:

<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>


script type='text/javascript'>
googletag.cmd.push(function () {
    googletag.pubads().enableAsyncRendering();
    googletag.defineSlot("/69003153/myad1", [728, 90], "div-1").addService         (googletag.pubads());
    googletag.defineSlot("/69003153/myad2", [300, 250], "div-2").addService    (googletag.pubads());
    googletag.enableServices();
});
</script>
<script type='text/javascript'>
function changeAd() {
    googletag.cmd.push(function () {
        var slot1 = googletag.display('/6900315/myad2', [300, 250], 'div-2');
        googletag.pubads().refresh([slot1]);
        //googletag.pubads().refresh();


    });
}
</script>
</head>
<body>
   <form id="form1" runat="server">


    <div id='div-1' style='width:728px; height:90px;'>
<script type='text/javascript'>
     googletag.cmd.push(function () { googletag.display('div-1'); });
</script>
</div>


 <!-- BoxAdd_Details -->
<div id='div-2' style='width:300px; height:250px;'>
   <script type='text/javascript'>
        googletag.cmd.push(function () { googletag.display('div-2); });
</script>
</div>

<input type="button" name="test" title="test" onclick="javascript:window.changeAd();"     value="Reload Ad" />

【问题讨论】:

    标签: google-dfp


    【解决方案1】:

    我也遇到了同样的问题。我还没有刷新我的广告,但我应该建议你不需要在 changeAd() 中重新声明你的广告位。

    代替:

    googletag.cmd.push(function () {
        googletag.pubads().enableAsyncRendering();
        googletag.defineSlot("/69003153/myad1", [728, 90], "div-1").addService         (googletag.pubads());
        googletag.defineSlot("/69003153/myad2", [300, 250], "div-2").addService    (googletag.pubads());
        googletag.enableServices();
    });
    

    试试:

    googletag.cmd.push(function () {
        googletag.pubads().enableAsyncRendering();
        slot1 = googletag.defineSlot("/69003153/myad1", [728, 90], "div-1").addService         (googletag.pubads());
        slot2 = googletag.defineSlot("/69003153/myad2", [300, 250], "div-2").addService    (googletag.pubads());
        googletag.enableServices();
    });
    

    在它们前面不带“var”的情况下声明它们会使槽在范围内成​​为全局的。在您的 changeAd() 函数中,只需调用

    googletag.pubads().refresh([slot1]);
    

    我什至不确定您是否需要将其放入 googletag.cmd.push()

    当我这样执行时,我的广告仍然不刷新,但运行 console.log(slot1) 显示广告位是活动的并且正在踢......

    其他人可以提供进一步的帮助吗?

    【讨论】:

    • 感谢您的款待!现在使用上面的代码刷新一个添加,使用 slot1 的全局范围
    • 它有效。确保包含 googletag.pubads().enableAsyncRendering();上面的 defineSlot() 因为我没有,我花了一段时间来解释为什么代码不工作
    • googletag.pubads().refresh();没有参数就可以正常工作:)
    • 我从来没有让 pubads().refresh() 做任何事情,你最终让它工作了吗?
    • 现在通过 jquery.dfp 项目github.com/coop182/jquery.dfp.js 和问题github.com/coop182/jquery.dfp.js/issues/8 工作
    猜你喜欢
    • 2016-11-03
    • 2021-10-19
    • 2020-03-18
    • 2012-06-14
    • 2014-11-15
    • 1970-01-01
    • 2012-07-02
    • 2011-09-07
    • 2013-03-03
    相关资源
    最近更新 更多