Google Analytics点击事件无效

时间:2014-04-05 13:09:47

标签: javascript jquery google-analytics

我在页面上有以下按钮:

<a id="DownloadPlatform" href="/some-page-1.html">Download</a>

我想在按钮点击时紧缩GA事件并重定向到某个页面。目前没有点击事件用于按钮点击。我打开控制台,粘贴代码来测试事件,但是我得到了令人惊讶的结果,我无法解释。但我们首先从代码开始:

_gaq.push(['_trackEvent', 'Downloaded', 'Platform [Web]', window.location.pathname]);

工作就像一个魅力,我在GA(在真实的跟踪中)得到一个事件。

$('#DownloadPlatform').click(function(){ 
    _gaq.push(['_trackEvent', 'Downloaded', 'Platform [Web]', window.location.pathname]);   
});

没用!但我被重定向到/some-page-1.html。没有错误。

$('#DownloadPlatform').click(function(e){ 
    e.preventDefault(); 
    _gaq.push(['_trackEvent', 'Downloaded', 'Platform [Web]', window.location.pathname]);   
});

确实有效!但正如预期的那样,我没有被重定向到一个页面。

$('#DownloadPlatform').click(function(e){ 
    e.preventDefault(); 
    _gaq.push(['_trackEvent', 'Downloaded', 'Platform [Web]', window.location.pathname]); 
    window.location.href='/some-page-2.html';   
});

最后我被重定向到一个页面,但没有记录GA事件。 任何人都可以解释这种奇怪的行为,可能背后的原因是什么?

2 个答案:

答案 0 :(得分:3)

您遇到的问题是,当您使用Google Analytics跟踪事件时,需要将事件发送到其服务器。由于您在跟踪活动时也会重定向网页,因此Google Analytics有时会在成功发送活动之前被切断。

所以这一切都取决于网络,哪个先发生;您是服务新网页的服务器或Google收到跟踪事件。

那么我们如何解决这个问题?

您可能倾向于发送跟踪事件并在setTimeout内重定向该页面,但这是一个坏主意,因为首先您无法确定Google是否已收到此事件。然后,您可能倾向于将超时设置为更长,但最终您只是通过人为增加页面加载时间给用户带来不良体验。

一个可行的解决方案可能是在您重定向到的网址中包含一个特殊参数,然后让新页面查找该参数,然后发送跟踪事件。

/some-page-2.html?track=myEventToTrack

另一种方法是使用Google Analytics&#39; PHP库和跟踪事件服务器端,这显然创造了更多的工作,因此它是为您的项目选择正确的解决方案的案例。

更新(更好的解决方案)

Google现在为事件提供回调,以下代码提供了更强大,更优雅的解决方案。

ga('send', 'event', {
    'eventCategory': 'a',
    'eventAction': 'b',
    'eventLabel': 'c',
    'eventValue': 1,
    'hitCallback': function () {
        document.location = '/foo';
    }
});

答案 1 :(得分:1)

<script>
var trackOutboundLink = function(url) {
   ga('send', 'event', 'outbound', 'click', url, {'hitCallback':
     function () {
     document.location = url;
     }
   });
}
</script> 
<a href="http://www.somepage.com" onclick=”trackOutboundLink(‘http://www.somepage.com’); return false;">Check out somepage.com</a>

hitCallback字段,用于在用户交互完成时通知Google Analytics。这可确保GA在用户离开您的网站之前收集交互数据。 你也可以用这个:

ga('send', 'pageview', {
  'page': '/some-page',
  'hitCallback': function() {
    window.location.replace = "[new url]";
  }
});

希望这会有所帮助!!

ANKIT

相关问题