我正在使用Google跟踪代码管理器向Google Analytic注册活动。有一次,我正在更改下拉菜单的更改网址。我想在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;
}
});
答案 0 :(得分:5)
如果您正在使用ga.js(异步分析),您可以在“高级配置”下的标记模板中设置命中回调(返回功能的宏)并在那里进行重定向(可能您需要单独的分析仅标记更改事件。)
如果您使用通用分析,不久之前在Tag Manager Google Group上进行了讨论,其中Googles Brian Kuhn suggested采用以下方式(我尚未对此进行测试):
与此同时,你试过这个吗?
dataLayer.push({callback:
function() {
alert(123);
});
然后,创建一个读取“回调”键的dataLayer宏。然后, 使用该宏作为UA标记上“要设置的字段”对的值, 在字段名称“hitCallback”下。
而不是提醒您进行重定向。
如果不清楚,点击回调是一种可以传递给跟踪调用的函数,并在跟踪调用执行后执行。
答案 1 :(得分:0)
我只需插入延迟即可解决同样的问题。 dataLayer.push
不需要返回任何内容,因此在dataLayer.push
执行的99%的情况下,100毫秒的延迟就足够了。
dataLayer.push({ ... });
setTimeout( function(){ window.location = ...; }, 100 );
请注意,GTM预览/调试模式会出现误报 - 您必须确保您的代码实际被触发,在我的情况下,我的事件是虚拟网页浏览,我可以在RealTime Analytics中看到结果。没有延迟,我可以看到标签没有被解雇。