我在链接点击时传递Google Analytics参数时遇到问题。似乎问题是在获取参数之前打开了新页面。这导致httpfox“ns binding error”中的红线。
从SO和Google看来,解决方案是使用setTimeOut,延迟时间为1,000毫秒。
在Google-Tag-Manager中,我有以下自定义html:
<script>
$('.submit-incident.clearingfix a').click(function(event){
dataLayer.push({
'event':'GAevent',
'eventCategory': 'Report Submit',
'eventAction': 'Link Click',
'eventLabel': 'CTA'
});
});
</script>
我真的不确定如何整合setTimeOut而不是简单地将整个事情延迟1秒。
这不起作用。
<script>
setTimeOut($('.submit-incident.clearingfix a').click(function(event){
dataLayer.push({
'event':'GAevent',
'eventCategory': 'Report Submit',
'eventAction': 'Link Click',
'eventLabel': 'CTA'
});
});),1000);
</script>
即使这样做,对我来说也没有意义。如何延迟页面打开一秒钟以便Google Analytics有足够的时间来获取dataLayer参数?
答案 0 :(得分:2)
一种可能的方法:
$('.submit-incident.clearingfix a').click(function(event){
dataLayer.push({
'event':'GAevent',
'eventCategory': 'Report Submit',
'eventAction': 'Link Click',
'eventLabel': 'CTA'
});
var target = this.href;
setTimeout(function() { location.assign(target); }, 1000);
event.preventDefault();
});
换句话说,不是延迟整个事件处理程序的调用(确实没有意义 - 你需要等待push
仅通过),而是延迟页面更改过程(设置) location.assign
来电时超时。