2

Google サイト運営者タグのリファレンスを見て、広告スロットにいくつかのイベントを追加できると判断しました。スロットを 1 つだけ定義した場合はうまく機能します。さらにスロットを追加すると、コンソールでスロットの回数だけイベントが繰り返されます。

だから、私がこのようなことをすると:

<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を 2 つ削除すると、console.log は 1 回だけですが、広告はレンダリングされません。

他のすべてを壊さずに余分なログを削除する方法はありますか? しばらくすると、非常に面倒になることがあります。

ありがとう!

4

1 に答える 1

8

ナスターシャ、

出力が 3 回繰り返される理由は、登録したイベント ハンドラーが、スロットがレンダリングされるたびに発生する「slotRenderEnded」イベントをリッスンするためです。この例には 3 つのスロットがあるため、イベントは 3 回発生します。渡されたイベント オブジェクトを調べることで、コールバックをトリガーするスロットを確認できます。

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

イベントは最初の 3 回ですが、次のようにイベント内のスロットを比較することで、スロット ベースのロジックを追加できます。

 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 に答える