2016-10-20 8 views
1

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

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

<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.logs это один раз, но тогда объявление не отображается.

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

Спасибо!

ответ

3

Настасья,

Причина выхода повторяется три раза это обработчик событий, который вы зарегистрировали прослушивает событие в «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 documentation

 Смежные вопросы

  • Нет связанных вопросов^_^