Universal Analytics: целевой элемент DOM с динамическим идентификатором или классом

Требование: захватить щелчок меню навигации

Текущая настройка:

TAG 1: Global Click Listener с единым правилом активации для всех страниц, то есть

{{url}} matches RegEX .*

ТЕГ 2. Отслеживание кликов в меню — пользовательский тег HTML с единым правилом активации для всех страниц и HTML:

<script type="text/javascript">

$('#top_nav_menu a').click(function(){
  var target = event.target;
  var parentElem = $(target).parent();
  var targetHref = $(target).attr("href");
  var targetClass= $(parentElem).attr("class");

  dataLayer.push({
      'event': 'navigation',
      'eventAction': targetClass,
      'eventLabel': targetHref
  });
});

</script>

ТЕГ 3: Событие — Нажатие на меню – тип тега Universal Analytics с правилом активации:

{{event}} equals navigation 

Тип отслеживания: Событие

Category: {{event}}
Action: {{event action}}
Label: {{event label}}

Макросы:

  1. действие события — тип макроса переменной уровня данных

Имя переменной уровня данных: eventAction

  1. метка события — тип макроса переменной уровня данных

Имя переменной уровня данных: eventLabel

Что происходит: в настоящее время Global Click Listener и Menu Click Tracking срабатывают правильно, но Событие — Menu Click завершается ошибкой. Я предполагаю, что это потому, что я неправильно нацеливаюсь на элемент DOM. Структура DOM выглядит следующим образом:

<nav id="top_nav_menu">
  <ul class="no-list">
    <li id="about" class="about"><a href="link-value">about</a></li>
    <li id="services" class="services"><a href="link-value">services</a></li>
    <li id="work" class="work"><a href="link-value">work</a></li>
    <li id="contact" class="contact"><a href="link-value">contact</a></li>
  </ul>
</nav>

Я не могу изменить HTML или добавить классы, как мне убедиться, что тег Event - Menu Click срабатывает и передается правильное значение dataLayer.

Любая помощь будет оценена по достоинству. Заранее спасибо.


person user988544    schedule 24.07.2014    source источник
comment
Разве вам не нужно передавать событие в качестве аргумента обработчику кликов для доступа к event.target (конечно, похоже, что в документации по адресу api.jquery.com/event.target) ?   -  person Eike Pierstorff    schedule 25.07.2014


Ответы (1)


В вашем слое данных для вашего тега «Отслеживание кликов меню» вы назначаете «$ (targetClass)» для действия и «$ (targetHref)» для ярлыка, которые кажутся ссылками jQuery (т. е. «$ (.. .)"), а не строки. Можете ли вы изменить их только на имена переменных, «targetClass» и «targetHref»?

Надеюсь это поможет.

person nyuen    schedule 24.07.2014
comment
Я тоже это понял, но изменить это не помогло. В любом случае событие — щелчок меню должно было срабатывать, поскольку значение для «события» передается в виде строки, и поэтому должно было быть передано, по крайней мере, это, если не остальные значения. - person user988544; 25.07.2014
comment
Еще одна вещь, на которую следует обратить внимание, это то, что «$(target)» должно быть «this» в вашем определении функции, потому что объект, для которого вызывается метод, является элементом привязки (т.е. $(#top_nav_menu a)). И тогда «целевой класс» будет «parentElem.attr (класс)». Не забудьте добавить аргумент «событие», как указал Эйке. - person nyuen; 25.07.2014