Регистрация тега издателя Google в Events

Я посмотрел ссылку на Google Publisher Tag и решил, что могу добавить некоторые события в свои рекламные места. Это прекрасно работает, если я определил только один слот. Если я добавлю больше слотов, события будут повторяться на моей консоли столько раз, сколько у меня есть слотов.

Итак, если я сделаю что-то вроде этого:

<script type='text/javascript'>
 googletag.cmd.push(function() { 
      var slot1 = googletag.defineSlot('/123456/leadeboard', [[728, 90]], 'div-gpt-ad-123456789-0').addService(googletag.pubads());
      var slot2 = googletag.defineSlot('/123456/leadeboard', [[728, 90]], 'div-gpt-ad-123456789-0').addService(googletag.pubads());
      var slot3 = googletag.defineSlot('/123456/leadeboard', [[728, 90]], 'div-gpt-ad-123456789-0').addService(googletag.pubads());
        googletag.pubads().enableSingleRequest(); 
        googletag.pubads().addEventListener('slotRenderEnded', function(event) {
          console.log('Slot has been rendered:');
        });
        googletag.enableServices();
 });
</script>

Мой console.log будет 3x «Слот обработан:». Если я удалю два из .addService из части defineSlot, он зарегистрирует их только один раз в console.log, но затем объявление не будет отображаться.

Есть ли способ удалить лишнее ведение журнала, не нарушая всего остального? Это может стать очень грязным через некоторое время.

Спасибо!


gpt
person Nastasja Sajtos    schedule 20.10.2016    source источник


Ответы (1)


Настасья,

Причина, по которой выходные данные повторяются три раза, заключается в том, что зарегистрированный обработчик событий прослушивает событие 'slotRenderEnded', которое происходит каждый раз при рендеринге слота. Поскольку в вашем примере три слота, событие сработает три раза. Вы можете увидеть, какой слот запускает обратный вызов, проверив переданный объект события.

 googletag.pubads().addEventListener('slotRenderEnded', function(event) {
        console.log('Slot has been rendered:');
        console.log(event); //inspect event
        console.log(event.slot); //inspect slot
 });

Несмотря на то, что событие происходит первые три раза, вы можете добавить логику на основе слотов, сравнив слоты в событии следующим образом:

 var slot1 = googletag.defineSlot('/123456/leadeboard', [[728, 90]], 'div-gpt-ad-123456789-0').addService(googletag.pubads());
 googletag.pubads().addEventListener('slotRenderEnded', function(event) {
    if(slot1 === event.slot){
        console.log('slot1 has been rendered');
    }
 });

Дополнительную информацию можно найти в документации по GPT.

person Rafal    schedule 25.10.2016