首页 文章

GTM单击事件在预览中工作,但在实时失败

提问于
浏览
0

我创建了一个自定义属性,可以添加到元素以跟踪对它们的点击 . 当我用预览模式测试事件时,它完美地工作 . 但是,在现场直播时,我从链接中得到很多未定义的事件,我不想跟踪 .

我的想法是希望能够将 data-track-click 添加到任何元素并开始跟踪它的事件 . 该属性还将保存事件类别,操作,标签和值,如下所示: data-track-click="Category, Action, Label, Value" . 在测试中,这非常有效 . 它仅触发包含此属性的元素,并在GTM中正确解析标签 . 但显然,在实时标签开始触发许多不包含 data-track-click 属性的元素点击 .

我使用Google Analytics调试器进行了测试并保留了我的控制台中的日志以在页面之间进行记录,我没有看错 . 我也发现使用Tag Assistant进行录音时没有任何问题 . 我无法复制我在Google Analytics中看到的所有错误点击,也不知道如何解决此问题 .

我很确定这与我的事件触发器有关 . 可能是正则表达式/ ^ . $ /即使在空的时候也会被解释?但为什么会这样呢?过去的配置是否也可以缓存?因为我之前肯定有过一些错误 .

这是自动事件变量:
enter image description here

这是事件:
enter image description here

1 回答

  • 0

    问题正在发生,有时GTM会触发点击子DOM元素 . 例如,如果你有这个DOM:

    <div data-track-click="Category, Action, Label, Value">
        <span>A</span>
        <a>B</a>
    </div>
    

    然后当你点击 A 然后GTM将点击没有 data-track-clickspan .

    My solution is

    • 使用以下条件创建触发器: Click Element - matches CSS selector - [data-track-click], [data-track-click] * . 哪个将捕获 data-track-click 和他所有的孩子
      enter image description here

    • 创建JS变量,它将从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 "";
    }
    
    • 然后创建一个将使用上面的变量和触发器的标记 .

    附:为了避免在GTM中更改某些内容并将其发布后进行缓存,请使用hard refresh

相关问题