【问题标题】:How to detect loading state of a Google Doubleclick for Publishers DFP Ad?如何检测 Google DFP 广告管理系统广告的加载状态?
【发布时间】:2013-09-25 09:48:24
【问题描述】:

我们在页面上有一系列 DFP 广告,每次用户点击图库查看器上的每个缩略图图标时,它们都会使用 javascript refresh() 调用自动刷新:

googletag.pubads().refresh();

问题在于,如果用户快速点击图库,则广告会在每次点击时不断刷新,最终可能会出现空白广告,因为系统无法跟上用户点击的速度。

因此,我只想在广告完全加载完成后才调用刷新。

有什么方法可以检测广告位内广告的加载状态吗?

我们的广告是通过以下方式定义的:

slot_header_lge = googletag.defineSlot('/XXX/Header-Home-Large', [945, 230], 'div-gpt-ad-Header-Large').addService(googletag.pubads());

googletag.pubads().enableAsyncRendering();
googletag.pubads().collapseEmptyDivs();
googletag.enableServices();

【问题讨论】:

    标签: javascript ads adsense google-dfp


    【解决方案1】:

    我制作了一个包含 DFP 的jquery plugin,不久前我想出了一个解决这个问题的方法……广告单元上有一个名为 renderEnded() 的内部函数,您可以使用它来检查何时广告单元已呈现。

    根据我的经验,这只是意味着 HTML 代码已被放入页面中……并不一定意味着广告已完全加载完毕。不过,您可以将一些 timeOuts 与此结合起来,以获得一个相当强大的系统。

    例如,使用我的插件,您可以尝试以下操作,它不应该在页面上的最后一个广告呈现 5 秒后才允许刷新广告:

    <!DOCTYPE html>
    <html>
    <head>
        <title>TEST</title>
        <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
        <script src="http://coop182.github.io/jquery.dfp.js/jquery.dfp.js"></script>
    
    </head>
    <body>
    
    Test DFP Ads.
    
    <div class="adunit" id="buyingcars_ATF_728x90" data-dimensions="728x90"></div>
    
    <script>
    
        var adsLoaded = true;
    
        function checkLoading() {
    
            console.log('Checking...');
    
            if (adsLoaded) {
                loadAds();
            }
        }
    
        function loadAds() {
    
            console.log('Loading...');
    
            adsLoaded = false;
    
            $.dfp({
                dfpID: '3853655',
                afterAllAdsLoaded: function() {
                    setTimeout(function(){adsLoaded = true;}, 5000);
                }
            });
        }
    
        checkLoading();
    
    </script>
    
    <a href="#" onclick="checkLoading();">Refresh</a>
    
    </body>
    </html>
    

    【讨论】:

    • 嘿,我只是想在你的插件和相同的解决方案中发布一个带有 lnk 的答案 - 我在搜索后找到了你的插件,并看到你劫持了一个内部谷歌方法来检查广告是否已呈现- 对此表示敬意!这个插件做得很好。此解决方案现已部署,并且运行良好! :)
    猜你喜欢
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    • 1970-01-01
    • 2015-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多