2013-10-07 43 views
0

這是我的GA代碼:GA事件上的鏈接只跟蹤火災時,HREF = '#'

<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> 

任何想法我做錯了什麼?

回答

3

這並不是說GA追蹤不是正在觸發,而是數據沒有被記錄。

_trackEvent通過向分析服務器請求跟蹤像素來記錄數據。由於鏈接在_trackEvent調用之後立即訪問新頁面,因此跟蹤像素請求可能會被取消,導致沒有數據被記錄。

最常見的模式是在鏈接到新頁面之前添加一個輕微的延遲(150ms作品)。搜索「_trackEvent延遲」

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;"> 

就像一個魅力

0

以這樣的事實,

的優勢
  1. _gaq執行按順序推送的任務。
  2. 功能可以推入_gaqlink to google developers article

所以解決問題的方法是

$("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; 
}); 
0

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>