javascript - Google Analytics : dataLayer. 推送不起作用?

标签 javascript google-analytics google-tag-manager

基于此线程:Tracking events using Google Tag Manager

我创建了自己的版本,位于例如http://test.site.com

<!DOCTYPE html>
<html>
<head>
  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>

  <script>
    window.dataLayer = window.dataLayer || [];  

    dataLayer.push({
      'event':'GAevent',
      'eventCategory': 'App4', 
      'eventAction': 'Click',
      'eventLabel': 'iOS4'
    });


  </script>
</head>

<body>
  <!-- Start google tag manager -->
  <script>
    (function(w, d, s, l, i) {
        w[l] = w[l] || [];
        w[l].push({
            'gtm.start': new Date().getTime(),
            event: 'gtm.js'
        });
        var f = d.getElementsByTagName(s)[0],
            j = d.createElement(s),
            dl = l != 'dataLayer' ? '&l=' + l : '';
        j.async = true;
        j.src =
            '//www.googletagmanager.com/gtm.js?id=' + i + dl;
        f.parentNode.insertBefore(j, f);
    })(window, document, 'script', 'primecont', 'GTM-1234');
  </script>
  <!-- End google tag manager -->

</body>
</html>

我打开了谷歌标签管理器 Debug模式,并在谷歌分析上实时观看。

我有 2 个标签触发规则:

  1. {{url}} 包含 test.site.com
  2. {{event}} 等于 GAevent

我在实时谷歌分析中得到的是“event category: undefined”和“event action: undefined”。

如果我删除 “{{url}} 包含 test.site.com”,则不会实时显示任何内容。

更新 我使用了一个单独的谷歌标签管理器帐户并创建了一个测试页面,所以一切都是最小的。它似乎是实时工作的。非工作谷歌标签管理器由学校和院系共享。我怀疑是这个原因?

最佳答案

由于多种原因,您的代码使用错误的变量触发。

如果 dataLayer.push() 是正确的,您的标签只需要 {{url}} 匹配 RegEx .* 作为其规则,因为所有推送在容器片段可用于所有页面规则之前发生。

但是,如果您愿意,您也可以推送 'event' : 'GAEvent' pre-container-snippet。但随后您必须删除 {{url}} 规则,因为它会使您的代码触发两次:首先 {{event}} 等于 GAEvent 然后使用 {{url}} 规则。

即使您解决了上述问题,您的代码仍无法正常工作的原因是您在容器代码段中重命名了 dataLayer 对象:

})(window, document, 'script', 'primecont', 'GTM-1234');

'primecont' 字符串是您出于某种原因为 Google 跟踪代码管理器的数据层指定的新名称。这就是您的 dataLayer.push() 不起作用的原因,因为 Google 跟踪代码管理器正在监听 primecont.push()

因此,要么将所有 dataLayer 交互更改为 primecont,要么将容器代码段的调用行编辑为如下所示:

})(window, document, 'script', 'dataLayer', 'GTM-1234');

关于javascript - Google Analytics : dataLayer. 推送不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28236289/

相关文章:

javascript - 如何以编程方式触发 Angular 带 bs-select

google-analytics - Big Query 中的 GA 漏斗分析 - "Correct" session 计数

google-tag-manager - Google 跟踪代码管理器 _event 宏

javascript - 将谷歌地图热图图层导出为 PDF

javascript - devicePixelRatio 可以为零吗?

facebook - 如何使用 Google Analytics 跟踪我网站上的 Facebook iframe 视频?

google-analytics - 是否可以根据一个网页上发生的 JavaScript 事件在 Google Analytics 中创建一个漏斗?

google-tag-manager - GTM 不会将随机数传播到自定义 HTML 标签

javascript - 基于值/对的 Handlebars.js JSON 设置类

asp.net - 如何从谷歌分析API获取获取 channel 报告