谷歌分析:dataLayer.push不工作? [英] Google analytics: dataLayer.push not working?

查看:204
本文介绍了谷歌分析:dataLayer.push不工作?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

基于以下主题:使用Google跟踪代码管理器跟踪事件

a>



我创建了自己的版本,位于例如 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':'点击',
'eventLabel':'iOS4'
});


< / script>
< / head>

< body>
<! - 启动google标签管理器 - >
< script>
(函数(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);
} )(窗口,文件,'script','primecont','GTM-1234');
< / script>
<! - 结束Google标记管理器 - >

< / body>
< / html>

我开启了Google标签管理器调试模式并实时观看Google分析。



我有一个标记的2个消防规则:


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

got是事件类别:undefined & 事件动作:未定义实时谷歌分析。



如果我删除 {{url}}包含test.site.com ,没有任何内容实时显示。



更新
我使用了分开的Google标签管理器帐户并创建了一个测试页面,因此所有内容都是最小的。它似乎在实时工作。非工作的谷歌标签管理员由学校和学院共享。我怀疑这是什么原因?

解决方案

您的标签因错误的变量触发了许多原因。 b
$ b

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



但是,您也可以将'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 code>,或编辑容器代码段的调用行如下所示:

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


Based on this thread: Tracking events using Google Tag Manager

I created my own version, which is located at e.g. 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>

I turned on google tag manager debug mode and watched it on google analytics real-time.

I have 2 fire rules for a tag:

  1. {{url}} contains test.site.com
  2. {{event}} equals GAevent

what I got is "event category: undefined" & "event action: undefined" in real time google analytics.

If I remove "{{url}} contains test.site.com", nothing is appearing in real-time.

Update I used a separated google tag manager account and create a test page, so everything it is minimum. It seems working in real time. The non-working google tag manager are shared by schools and faculties. I suspect that is the reason?

解决方案

Your Tag is firing with wrong variables for a number of reasons.

If the dataLayer.push() were correct, you Tag would only need the {{url}} matches RegEx .* as its rule, since all pushes that occur before the container snippet are available to the All Pages rule.

However, you can also push the 'event' : 'GAEvent' pre-container-snippet, if you wish. But then you must remove the {{url}} rule, as it would make your tag fire twice: First with {{event}} equals GAEvent and then with the {{url}} rule.

The reason why your code doesn't work even if you fix the above issues is because you have renamed the dataLayer object in your container snippet:

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

the 'primecont' String is the new name for Google Tag Manager's Data Layer that you have given, for some reason. This is why your dataLayer.push() will not work, since Google Tag Manager is listening for a primecont.push() instead.

So, either change all your dataLayer interactions to primecont, or edit the container snippet's invocation line to look like this:

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

这篇关于谷歌分析:dataLayer.push不工作?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆