我创建了一个自定义属性,可以将其添加到元素中以跟踪对它们的点击。当我使用预览模式测试事件时,它完美地工作。但是,在现场直播的时候,我从链接中收到了很多未定义的事件,我不想跟踪。
我的想法是,我希望能够将数据跟踪点击添加到任何元素,并开始跟踪它的事件。该属性还包含事件类别,操作,标签和值: data-track-click ="类别,操作,标签,值" 。在测试中,这非常有效。它仅触发包含此属性的元素,并在GTM中正确解析标签。但显然,实时标签会开始触发许多不包含数据跟踪点击属性的元素点击。
我使用Google Analytics调试器测试并保留我的控制台中的日志以在页面之间进行记录,我没有看错。我也发现使用Tag Assistant进行录音时没有任何问题。我无法复制我在Google Analytics中看到的所有错误点击,也不知道如何解决此问题。
我很确定这与我的事件触发器有关。即使空的时候正在解释正则表达式/^.+$/?但为什么会这样呢?过去的配置是否也可以缓存?因为我之前肯定有过一些错误。
答案 0 :(得分:0)
问题正在发生,有时GTM会触发点击子DOM元素。例如,如果你有这个DOM:
<div data-track-click="Category, Action, Label, Value">
<span>A</span>
<a>B</a>
</div>
然后,当您点击A
时,GTM会点击span
,但没有data-track-click
。
我的解决方案是:
Click Element
- matches CSS selector
- [data-track-click], [data-track-click] *
。这将捕获data-track-click
及其所有孩子 data-track-click
属性值。对于类别:
function() {
var el = {{Click Element}}
while (el.getAttribute("data-track-click") == null && el !=null) {
el = el.parentElement;
}
if (el != null) {
var attr = el.getAttribute("data-track-click");
return attr.split(',')[0].trim();
}
return "";
}
行动:
function() {
var el = {{Click Element}}
while (el.getAttribute("data-track-click") == null && el !=null) {
el = el.parentElement;
}
if (el != null) {
var attr = el.getAttribute("data-track-click");
return attr.split(',')[1].trim();
}
return "";
}
对于标签:
function() {
var el = {{Click Element}}
while (el.getAttribute("data-track-click") == null && el !=null) {
el = el.parentElement;
}
if (el != null) {
var attr = el.getAttribute("data-track-click");
return attr.split(',')[2].trim();
}
return "";
}
P.S。为了避免在GTM中更改内容并发布后再进行缓存,请使用hard refresh