1

这是我的 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

4 回答 4

3

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

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

最常见的模式是在链接到新页面之前添加一个轻微的延迟(150 毫秒有效)。搜索“_trackEvent 延迟”

于 2013-10-07T15:46:51.437 回答
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;">

奇迹般有效

于 2013-10-08T15:10:16.077 回答
1

是 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>
于 2015-06-03T14:15:00.500 回答
0

利用以下事实

  1. _gaq执行顺序推送的任务。
  2. 功能可以推入_gaq链接到谷歌开发者文章

所以问题的解决方案是

$("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;
});
于 2015-02-24T19:11:41.603 回答