GTM не будет работать, если на элементе уже есть обработчик событий? - PullRequest
0 голосов
/ 15 марта 2020

Это правда: GTM не будет работать, если в элементе уже есть обработчик событий?

Например, я хочу настроить отслеживание нажатий кнопок. Но если в кодовой странице уже есть другой обработчик (script, addEventListener), GTM проигнорирует мои настройки? Это правильно? Если да, то в каких случаях GTM не будет записывать события?

Спасибо

1 Ответ

0 голосов
/ 16 марта 2020

Нет, это не правда. Менеджер тегов Google будет работать, даже если к нему уже подключен обработчик событий. Однако это не будет работать, если функция в этом обработчике событий подавляет распространение события.

Например, GTM потерпит неудачу, если вы сделаете что-то подобное (пример использует jQuery, но то же самое относится и к обычному JS):

$('a#toTop').on('click', function() {
  console.log("Link Clicked");
  return false;
});

, поскольку return false останавливает распространение событий, что является обязательной для GTM функцией JS.

Менеджер тегов Google не прикрепляет обработчик событий к отдельным элементам , Вместо этого он присоединяет обработчик событий к самому документу. Щелчок по элементу затем распространяется вверх через DOM, пока он не встретится с документом root и не будет обработан соответствующим обработчиком события. Если вы возвращаете false, событие не перемещается вверх, и обработчик событий GTM не будет работать.

Однако если вы сделаете это правильно - например, с помощью event.preventDefault() вместо возврата false - тогда GTM будет работать просто хорошо. «Return false» - это в основном устаревший способ подавления действия элемента по умолчанию, и его больше ни в коем случае нельзя использовать для этой цели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...