[英]Google Analytics dataLayer.push not working in a Javascript Promise
[英]Google analytics: dataLayer.push not working?
基于此主题: 使用Google跟踪代码管理器跟踪事件
我创建了自己的版本,位于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>
我打开谷歌标签管理器调试模式,并在谷歌分析实时观看它。
我对标签有2个防火规则:
我得到的是“ event category: undefined
”和“ event action: undefined
”实时谷歌分析。
如果我删除"{{url}} contains test.site.com
”,则不会实时显示任何内容。
更新我使用了一个单独的谷歌标记管理器帐户并创建了一个测试页面,所以一切都是最小的。 它似乎在实时工作。 非工作的Google代码管理器由学校和学院共享。 我怀疑是这个原因?
由于多种原因,您的标签使用错误的变量触发。
如果dataLayer.push()
是正确的,那么Tag只需要{{url}}匹配RegEx。*作为其规则,因为在容器代码段之前发生的所有推送都可用于所有页面规则。
但是,如果您愿意,还可以推送'event' : 'GAEvent'
预容器代码段。 但是,您必须删除{{url}}规则,因为它会使您的代码触发两次 :首先使用{{event}}等于GAEvent ,然后使用{{url}}规则。
即使您修复了上述问题,您的代码仍无法正常工作的原因是您已在容器代码段中重命名了dataLayer对象:
})(window, document, 'script', 'primecont', 'GTM-1234');
由于某些原因, 'primecont'
字符串是您提供的Google 'primecont'
代码管理器数据层的新名称。 这就是为什么你的dataLayer.push()
不起作用,因为Google primecont.push()
代码管理器正在监听primecont.push()
。
因此,要么将所有dataLayer
交互更改为primecont
,要么将容器代码段的调用行编辑为如下所示:
})(window, document, 'script', 'dataLayer', 'GTM-1234');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.