关于如何将事件注册到 gpt 服务似乎有几个问题:
Google Publisher Tag registering to Events
registering to events with google publisher tag
文档中明确定义了如何执行此操作:
googletag.pubads().addEventListener('eventName', callbackFn);
当组件(React)安装在回调函数中时,我将我的事件添加到服务中,window.googletag.cmd.push
如Google 本教程中所述。
现在的问题是,每次我更改页面时,都会向服务中添加更多的事件侦听器。通过使用此方法(来自文档),我可以确保只有一个事件侦听器在实际存在的插槽上执行:
googletag.pubads().addEventListener('impressionViewable', function(event) {
if (event.slot == targetSlot) { // will only run on target slot
// Slot specific logic.
}
});
但是更多的事件侦听器将保持活动状态并继续执行(不执行 if 语句中的代码)。
现在,我假设谷歌会实现这样的东西(在 componentWillUnmount 上运行):
googletag.pubads().removeEventListener('eventName', callbackFn);
但它在文档中不存在,我似乎找不到任何方法从服务中删除活动的事件侦听器?