4

我正在使用 Google 跟踪代码管理器向 Google Analytic 注册事件。在一个平面上,我正在更改下拉列表中的 url。我想在 Google Analytics 上跟踪相同的事件。我担心如果在向 GA 注册事件之前更改页面会发生什么。请让我知道 GTM 中是否有一个功能可以确保在事件注册到 GA 之前页面不会更改。

这是将在下拉列表更改时执行的代码

var targetCityChangedEventName = "TargetCityChanged";

$("#location", topHeader).bind({
        "change": function(ev, obj) {
            dataLayer.push({event : targetCityChangedEventName });
            var url = "http://" + window.location.host + "/" + $(this).val();
            window.location = url;
     }
});
4

2 回答 2

5

如果您使用 ga.js(异步分析),您可以在“高级配置”下的标记模板中设置命中回调(返回函数的宏)并在那里进行重定向(可能您需要一个单独的分析标记只是更改事件)。

如果您使用 Universal Analytics,那么不久前在 Tag Manager Google Group 上进行了一次讨论,Google 的 Brian Kuhn 建议采用以下方式(我没有对此进行测试):

与此同时,你试过这个吗?

dataLayer.push({callback:
 function() {
     alert(123);   
});

然后,创建一个读取“回调”键的 dataLayer 宏。然后,将该宏用作您的 UA 标记上的“要设置的字段”对的值,在字段名称“hitCallback”下。

而不是警报,你会做重定向。

如果不清楚,命中回调是一个可以传递给跟踪调用并在跟踪调用执行后执行的函数。

于 2013-12-02T14:09:11.543 回答
0

我可以通过简单地插入延迟来解决同样的问题。dataLayer.push不需要返回任何东西,因此在 99% 的情况下 100 毫秒的延迟就足以执行dataLayer.push

dataLayer.push({ ... });
setTimeout( function(){ window.location = ...; }, 100 );

请注意,GTM 预览/调试模式会产生误报 - 您必须确保您的代码实际上被触发,在我的情况下,我的事件是针对虚拟网页浏览的,我可以在 RealTime Analytics 中看到结果。没有延迟,我可以看到标签没有被触发。

于 2014-04-06T01:51:43.050 回答