将setTimeOut添加到Google Analytics功能

时间:2013-09-12 23:16:49

标签: javascript google-analytics

我在链接点击时传递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参数?

1 个答案:

答案 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来电时超时。