【问题标题】:How to fire an event to use google tagmanager with Turbolinks如何触发事件以使用带有 Turbolinks 的 google tagmanager
【发布时间】:2015-01-14 08:02:31
【问题描述】:

我正在尝试使用 Rails 应用程序实现 google tagmanager,但由于 turbolinks 无法触发其标签。

我已经看到了这个答案:Firing tags in GTM (Google Tag Manager) containers under turbolinks 这个:Googletagmanager with Turbolinks 这告诉我我需要在 page:load 上触发一个事件,但我似乎无法触发该事件。 我试过放

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

在 application.js 文件中,以及将其放入视图中,并且我还尝试了通过咖啡脚本在咖啡脚本分析文件中使用它的变体:

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

但由于 turbolinks,当我移动到另一个页面时,我仍然无法让 google tagmanager 触发其标签。

任何帮助将不胜感激。

【问题讨论】:

  • 此代码仅将事件放入dataLayer。您在 GTM 中设置了哪些规则和标签来处理此事件?
  • 我有一个 CrazyEgg 的标签,并包含作为触发规则的“GTM 事件”,它的规则是 {{event}} 包含“event_name” - 这就是你的意思吗?
  • 是的,这就是我的意思。当您移动到另一个页面时,打开浏览器的 JavaScript 控制台并输入“dataLayer”以显示 dataLayer 对象的内容。您将看到几个子对象。如果打开第四个对象,事件类型是什么?您是否看到任何其他子对象?他们的事件类型是什么?
  • 有八个对象:第四个对象说:事件:“gtm.dom”。我实际使用的“event_name”是单词“contratado”(在代码和 GTM 中)。还有其他几个对象,其中第 2、第 3 和第 7 个对象都有事件:“contratado”。对象 5 具有“事件:gym.load”,对象 6 具有“事件:gtm.js”,对象 8 和 9 具有事件:“event_name”。此外,在加载控制台打印之前: Uncaught TypeError: Cannot read property 'replace' of undefined 。感谢您的帮助
  • 对不起-我上面的评论不正确-我的意思是:有八个对象:第四个对象说:事件:“gtm.dom”。我实际使用的“event_name”是单词“contratado”(在代码和 GTM 中)。还有其他几个对象,其中第 2、第 3、第 6、第 7 和第 8 个对象都有事件:“contratado”。在其下方都有 proto。此外,在加载控制台打印之前: Uncaught TypeError: Cannot read property 'replace' of undefined 。感谢您的帮助

标签: javascript ruby-on-rails google-tag-manager turbolinks


【解决方案1】:

您可以使用虚拟页面视图来跟踪快速链接页面加载。在 head 关闭标记之前添加以下脚本。修改了默认的 GTM 脚本,使其可以与 turbo 链接一起使用。

<!-- 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 -->

【讨论】:

    猜你喜欢
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    相关资源
    最近更新 更多