[英]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.