2

我查看了 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 “插槽已被渲染:”。如果我从 defineSlot 部分中删除两个.addService,它只会 console.logs 一次,但不会呈现广告。

有没有办法在不破坏其他所有内容的情况下删除额外的日志记录?一段时间后它会变得非常混乱。

谢谢!

4

1 回答 1

8

娜斯塔莎,

输出重复 3 次的原因是您注册的事件处理程序侦听“slotRenderEnded”事件,该事件在每次插槽呈现时发生。由于您的示例有三个插槽,因此该事件将触发 3 次。您可以通过检查传入的事件对象来查看哪个插槽触发了回调。

 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 文档中阅读更多内容

于 2016-10-25T14:26:36.333 回答