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