Похоже, есть несколько вопросов о том, как регистрировать события в gpt-сервисе:
Тег издателя Google, регистрирующийся на события
регистрация на события с тегом издателя Google
Как это сделать, четко определено в документации :
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).
Теперь я предположил, что Google реализовал бы что-то вроде этого (для запуска на componentWillUnmount):
googletag.pubads().removeEventListener('eventName', callbackFn);
Но его нет в документации, и я не могуПохоже, вы нашли способ удалить активные прослушиватели событий из службы?