Как запустить событие, чтобы использовать менеджер тегов Google с Turbolinks

Я пытаюсь внедрить диспетчер тегов Google с помощью приложения rails, и у меня возникают проблемы с запуском его тегов из-за турбоссылок.

Я видел этот ответ: Запуск тегов в GTM (Google Диспетчер тегов) контейнеры под турболинками и это: Googletagmanager with Turbolinks Это говорит мне, что мне нужно чтобы вызвать событие на странице: загрузка, но я не могу вызвать событие. я пробовал ставить

$( window ).on( 'page:load', function () {
  dataLayer.push({'event': 'event_name'});
} );

в файле application.js, а также поместить его в представления, и я также пробовал использовать coffeescript с вариациями этого в файле аналитики coffeescript:

ready = ->
    dataLayer.push({'event': 'event_name'});
$(document).ready(ready)
$(document).on('page:load', ready)

Но я все еще не могу заставить диспетчер тегов Google запускать свои теги, когда я перехожу на другую страницу из-за турбоссылок.

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


person user3261603    schedule 17.11.2014    source источник
comment
Этот код только помещает событие в dataLayer. Какие правила и теги вы добавили в GTM для обработки этого события?   -  person kevintechie    schedule 17.11.2014
comment
У меня есть тег для CrazyEgg, и я включил в качестве правила активации «GTM Event», в котором правило {{event}} содержит «event_name» — это то, что вы имеете в виду?   -  person user3261603    schedule 17.11.2014
comment
Да, это то, что я имею в виду. Когда вы переходите на другую страницу, откройте консоль JavaScript своего браузера и введите dataLayer, чтобы отобразить содержимое объекта dataLayer. Вы увидите несколько подобъектов. Если вы откроете четвертый объект, каков будет тип события? Видите ли вы какие-либо дополнительные подобъекты? Каковы их типы событий?   -  person kevintechie    schedule 17.11.2014
comment
Есть восемь объектов: четвертый объект говорит: событие: gtm.dom. Имя_события, которое я на самом деле использую, — это слово contratado (как в коде, так и в GTM). Есть несколько других объектов, из которых 2-й, 3-й и 7-й имеют событие: контратадо. У объекта 5 есть событие: gym.load, у объекта 6 есть событие: gtm.js, а у объектов 8 и 9 есть событие: event_name. Кроме того, перед загрузкой консоль выводит: Uncaught TypeError: Cannot read property 'replace' of undefined . Спасибо за вашу помощь   -  person user3261603    schedule 18.11.2014
comment
Извините - мой комментарий выше неверен - я хотел сказать следующее: Есть восемь объектов: четвертый объект говорит: событие: gtm.dom. Имя_события, которое я на самом деле использую, — это слово contratado (как в коде, так и в GTM). Есть еще несколько объектов, из которых 2-й, 3-й, 6-й, 7-й и 8-й имеют событие: контратадо. У всех есть proto под этим. Кроме того, перед загрузкой консоль выводит: Uncaught TypeError: Cannot read property 'replace' of undefined . Спасибо за вашу помощь   -  person user3261603    schedule 18.11.2014
comment
По моему опыту, первые три события должны быть gtm.js, gtm.dom и gtm.load. Вы видите 5 событий contratado после перемещения на одну страницу? Если это так, вы слишком часто вызываете dataLayer.push(). Кроме того, возможно, что из-за ошибки JS ваши теги не срабатывают. К сожалению, я не смогу помочь вам с предоставленной информацией.   -  person kevintechie    schedule 18.11.2014


Ответы (1)


Вы можете использовать виртуальный просмотр страницы для отслеживания загрузки страниц с турбо-ссылками. Добавьте следующий скрипт непосредственно перед закрывающим тегом head. Изменен сценарий GTM по умолчанию, чтобы он работал с турбо-ссылками.

<!-- Google Tag Manager trigger for Turbolinks -->
 <script type="text/javascript">
 $(document).on('page:change', function(){
   var url = window.location.href;
   var data = {
    'event':'pageView',
    'virtualUrl': url
   };
   if(window['referer'] !== undefined){
      data['pageReferrer'] = window['referer'];
   }else{
      data['pageReferrer'] = document.referrer;
   }
   dataLayer.push(data);
   window['referer'] = window.location.href;
 });
 </script>
 <!-- End Google Tag Manager trigger for Turbolinks -->

person Thilina Hasantha    schedule 21.03.2017