2016-07-01 2 views
0

私はマウスウィンドウをスクロールしてgoogletag.pubads()。refresh([currentAdSlot])を無限ループで使用しています。更新後のslotRenderEndedイベントです。しかし、私がリフレッシュ関数を呼び出すと、それぞれ 'slotRenderEvent'が累積的にトリガされます。たとえば、ResendAd関数の最初の呼び出しで、イベントを1回だけ聴いているとします。秒の呼び出しでは、イベントを2回聴いて、このカウントを連続的に増加させます。このバグを修正するには?何が間違っているのか分かりません。 Googleのdfp apiのバグか自分のコードですか?pubads()。refresh([currentSlot])

function ResendAd(AdSlot,callback) { 

    googletag.pubads().clearTargeting(); 
    googletag.pubads().updateCorrelator(); 
    googletag.pubads().refresh([AdSlot]); 

    googletag.pubads().addEventListener('slotRenderEnded', function (event) { 
    console.warn('This function scope triggered multiple times.'); 
    if (event.slot === AdSlot) { 
     if (!event.isEmpty) { 
     if (callback && typeof callback === "function") { 
      callback(event); 
     } 
     } 
    } 
    }); 
} 

答えて

1

これはコードのバグです。 ResendAdを呼び出すたびに、イベントリスナー(slotRenderEnded)が追加されます。

イベントリスナーは、一度しか呼び出されない関数に追加する必要があります。あなたのコードにアクセスできない場所を正確に伝えることはできません。