javascript - 如何让 Google 跟踪代码管理器跟踪事件?
问题描述
我正在尝试使用 Google 跟踪代码管理器跟踪事件,这是我的代码:
<!-- Google Tag Manager -->
(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 =
'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-MYTAG');
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'GTM-MYTAG');
function trackEvent(eventName, eventValue) {
gtag('event', 'click', {
'event_category': eventName,
'event_label': eventValue,
'value': 1
});
}
这是点击某物时触发事件的 HTML:
<button onclick="trackEvent('Add Button Clicked', 'Header')"
class="chrome-button chrome-link btn btn-sm btn-sample">
<div>Add to Chrome - Free</div>
</button>
我究竟做错了什么?我试过去谷歌分析->实时->事件,当我点击按钮时什么都没有显示。我还确保使用我的 IP 地址删除了所有过滤器。如果我遗漏了什么,请告诉我。
解决方案
您混淆了 GTM 和 gtag.js。它们是用于跟踪的两个独立库。
以下是在 GTM 中进行 GA 事件跟踪时应使用的方法:https: //support.google.com/tagmanager/answer/6106716?hl=en
如果你只是想让它工作,那么将 GTM 替换为:
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-XXXX-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-XXXX-1');
</script>
然后像你一样触发这个函数:
function trackEvent(eventName, eventValue) {
gtag('event', 'click', {
'event_category': eventName,
'event_label': eventValue,
'value': 1
});
}
你不需要其他任何东西。
推荐阅读
- python - Django 排除 url 模式
- flutter - 手势检测器或 Inkwell onTap 属性未针对特定区域执行 [IOS]
- wpf - 从 WPF 中的 DocumentViewer 中删除边框和阴影
- python-3.x - 当我想使用“nohup”命令在后台执行 python 脚本时如何隐藏我的密码?
- bash - 如何解决 github 操作中的命令执行错误?
- python - 错误:尝试循环时解包的值过多(预期为 2)
- python - 在python list/df中递归查找密钥对关系
- python - 保存和加载的子类 keras 模型为非默认调用 args tensorflow 2 抛出 ValueError“找不到匹配的函数”
- python - 使用 CNN 的多类图像分类中的错误
- mysql - 将连接的结果放在子对象中,而不是在结果中“平放”