仅当div-x存在时defineSlot

时间:2018-08-23 12:46:20

标签: google-tag-manager google-dfp gpt

只有在页面上存在相应的<?php $single = $_POST['single']; $id = $_POST['id']; // do your logic and set it's status echo json_encode(['status' => $status]); 时,才可以动态定义googletag.defineSlot吗?当前使用this方法通过Google跟踪代码管理器进行定义。我们在没有广告单元的其他页面上收到这些错误:

在单请求模式下,调用

googletag.defineSlot的次数超过了与广告位相关联的DOM中DIV的次数。这会影响展示次数

定义广告位并推送显示

div-x

页面上的导航

<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-x时,定义defineSlot。

1 个答案:

答案 0 :(得分: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')); 
        }); 
    }    
});