繁体   English   中英

如何检测Google DFP广告管理系统DFP广告的加载状态?

[英]How to detect loading state of a Google Doubleclick for Publishers DFP Ad?

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

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

我制作了一个用于封装DFP广告管理系统的jQuery插件 ,并在不久前提出了解决此问题的方法...广告单元上有一个内部函数,称为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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM