DefineSlot только когда присутствует div-x

Возможно ли динамическое определение googletag.defineSlot только тогда, когда соответствующий div-x присутствует на странице? Определение через Диспетчер тегов Google с использованием метода это в настоящее время. Мы получаем эти ошибки на разных страницах, где нет рекламного блока:

googletag.defineSlot вызывался больше раз, чем DIV в модели DOM, связанной с рекламными местами в режиме единого запроса. Это повлияет на количество показов.

Определите рекламное место и нажмите дисплей

<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, соответствующий объявленному слоту, находится на текущей странице.

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
0
0
584
1

Ответы 1

Дело в том, что вы вызываете функцию 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')); 
        }); 
    }    
});

Другие вопросы по теме