Google发布商代码,如何从服务中删除事件监听器

时间:2019-05-10 14:52:23

标签: gpt

关于如何向gpt服务注册事件似乎有几个问题:
Google Publisher Tag registering to Events
registering to events with google publisher tag

documentation中明确定义了操作方法:
googletag.pubads().addEventListener('eventName', callbackFn);

当组件(React)如this tutorial by Google中所述安装在window.googletag.cmd.push的回调函数中时,我将事件添加到服务中。

现在的问题是,每次更改页面时,都会向该服务中添加更多事件侦听器。通过使用此方法(从文档中),我可以确保只有一个事件侦听器在实际存在的插槽上执行:

googletag.pubads().addEventListener('impressionViewable', function(event) {
  if (event.slot == targetSlot) { // will only run on target slot
    // Slot specific logic.
  }
});

但是更多的事件侦听器将保持活动状态并继续执行(不执行if语句中的代码)。

现在,我以为Google会实现这样的东西(在componentWillUnmount上运行):
googletag.pubads().removeEventListener('eventName', callbackFn);

但是它在文档中不存在,我似乎找不到任何从服务中删除活动事件侦听器的方法?

1 个答案:

答案 0 :(得分:2)

所以我去了:

let eventListnerCreated = false;
if(!eventListnerCreated) {
    eventListnerCreated = googletag.pubads().addEventListener("slotRenderEnded", function(event) {
          // blablabla
    });
}

不干净。但是可以。

我知道这并不能解决删除事件侦听器的最初问题,但这不会让我们一次又一次地创建事件侦听器。