链接上的GA事件跟踪仅在href ='#'时触发

时间:2013-10-07 15:15:57

标签: google-analytics event-tracking

这是我的GA代码:

    <script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXXXXX-X']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>

此代码向GA事件跟踪报告:

<li><a href="#" onClick="_gaq.push(['_trackEvent', 'SiteQA2', 'click', 'Analytics click']);" class="button button-style4 button-big">Get Started</a></li>

但是这段代码没有:

<li><a href="./page2.php?id=5" onClick="_gaq.push(['_trackEvent', 'SiteQA2', 'click', 'Analytics click']);" class="button button-style4 button-big">Get Started</a></li>

知道我做错了吗?

4 个答案:

答案 0 :(得分:3)

并不是GA跟踪没有触发,而是数据没有被记录。

_trackEvent通过从分析服务器请求跟踪像素来记录数据。由于该链接会在_trackEvent调用后立即访问新页面,因此跟踪像素请求可能会被取消,从而导致无法记录任何数据。

最常见的模式是在链接到新页面之前添加一点延迟(150ms工作)。搜索“_trackEvent delay”

答案 1 :(得分:1)

我解决了这个问题。

我用一个小延迟创建了这个函数:

<script type="text/javascript">
function trackOutboundLink(link, category, action) { 

try { 
_gaq.push(['_trackEvent', category , action]); 
} catch(err){}

setTimeout(function() {
document.location.href = link.href;
}, 100);
}
</script>

我打电话给这样的链接:

<a href="http://www.example.com" onClick="trackOutboundLink(this, 'Outbound Links', 'example.com'); return false;">

像魅力一样工作

答案 2 :(得分:1)

here来自ga团队的回答!

我对此进行了修改以获得更简单的方法:

trackBeforeHref : function(element, category, event, label) {
        ga('send', 'event', category, event, label, {'hitCallback':
          function () {
            document.location = element.href;
          }
        });
    },

然后您可以这样使用:

<a onclick="trackBeforeHref(this, 'a category', 'a event', 'a label'); return false;"> </a>

答案 3 :(得分:0)

利用

的事实
  1. _gaq执行按顺序推送的任务。
  2. 可以将功能推送到_gaqlink to google developers article
  3. 所以解决问题的方法是

    $("a").on("click", function(){
      // stop opening the link using return false at end of this event callback function
      var href = $(this).attr("href");
      // pushing the track event task first and the call to open the href link so that both these tasks happen sequencially.
      _gaq.push(['_trackEvent', 'click', 'some_link' ], function(){ 
        window.location = href;
      });
      return false;
    });