我通过向下滚动鼠标窗口在无限循环中使用googletag.pubads()。refresh([currentAdSlot]),我想在刷新功能后监听'slotRenderEnded'事件。但是,每当我调用刷新功能时,“ slotRenderEvent”就会累积触发。例如,在第一次调用ResendAd函数时,监听事件仅运行一次。在秒呼叫中,监听事件工作两次,并不断增加此计数。如何解决这个错误?我不明白怎么了?这是Google DFP API的错误还是我的代码?

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);
        }
      }
    }
  });
}

最佳答案

这是您代码中的错误。每次调用ResendAd时,您都会添加一个事件侦听器(slotRenderEnded)。

您应该在仅调用一次的函数中添加事件侦听器。我无法告诉您完全无法访问您代码的位置。

09-18 14:40