0

googletag.defineSlot是否可以仅在页面上存在对应项时动态定义 a div-x目前使用此方法通过 Google Tag Manager 定义。我们在不存在广告单元的不同页面上收到这些错误:

在单请求模式下,调用 googletag.defineSlot 的次数超过了 DOM 中与广告位关联的 DIV 的次数。这将影响展示次数

定义广告位并推送展示

<script>
googletag.cmd.push(function() { 
googletag.defineSlot('/101030411/AC-LDB-3', sizesldb, 'div-4')
                 .addService(googletag.pubads());

googletag.pubads().collapseEmptyDivs();
googletag.pubads().enableSingleRequest();
googletag.enableServices();
});

var adunits = document.querySelectorAll('div[id^="div-"]');
for (var i = 0; i < adunits.length; i++) { googletag.cmd.push(function() { 
googletag.display(adunits[i].getAttribute('id')); }); }
</script>

页面上的div:

<div style="text-align: center" id='div-x'></div>

预期的操作是仅当与声明的插槽匹配的 div-x 在当前页面上时才定义插槽。

4

1 回答 1

0

事情是你cmd.push在循环中调用函数。尝试以下方法:

googletag.cmd.push(function() {
    var adunits = document.querySelectorAll('div[id^="div-"]');
    for (var i = 0; i < adunits.length; i++) { 
        googletag.cmd.push(function() {
            googletag.display(adunits[i].getAttribute('id')); 
        }); 
    }    
});
于 2018-08-23T13:03:21.007 回答