Google Analytics:爲連接點擊設定事件追蹤的方法

在 Google Analytics 中,可使用 Event Tracking 功能跟蹤自定義的事件。可是,若是你要跟蹤的是一個連接點擊,那麼單純這樣寫則頗有可能致使漏掉許多事件:javascript

<a href="http://www.example.com" onclick="_trackEvent('link', 'click', this.href)">Visit example.com</a>

這是由於,每次自定義事件被觸發的時候,瀏覽器都會向 Google 的服務器發送一個請求,從而發送數據。可是點擊連接會直接進入下一個頁面,若是此時須要發送的請求尚未完成,瀏覽器就會放棄該請求而直接跳轉。因此,就會致使事件沒法被記錄。html

解決方法

經典跟蹤代碼 (ga.js) 的解決方法

既然事件沒有記錄是由於跳轉得太快,那麼咱們能夠經過setTimeout函數設定一個比較小的延時來給瀏覽器充足的時間向 Google 的服務器發送數據。通常設爲 500ms 或 1000ms 就足夠了,同時用戶也不會察覺到。java

咱們能夠把觸發事件的語句包裝到一個自定義函數中:瀏覽器

var trackOutboundLink = function(url) { _trackEvent('link', 'click', url); setTimeout("document.location='" + url + "'", 500); }

同時在 HTML 中這麼寫:服務器

<a href="http://www.example.com" onclick="trackOutboundLink(this.href);return false;">Visit example.com</a>

其中return false語句防止了默認行爲(點擊a而跳轉)的發生,實際跳轉由咱們本身來完成。函數

Universal Analytics (analytics.js) 的解決方法

Google 建議的方法

若是你已經升級到了 Universal Analytics,那麼 Google 給出了這種狀況下的官方建議。在新版的跟蹤代碼中,設置事件的函數包含了一個 callback,在成功設置完畢後觸發。因而咱們能夠把手工跳轉的代碼寫到 callback 函數中,這樣就不用顯式地設置 timeout 了,同時瀏覽器也可以「儘快」跳轉。this

一樣聲明一個包裝函數:google

var trackOutboundLink = function(url) { ga('send', 'event', 'outbound', 'click', url, {'hitCallback': function () { document.location = url; } }); }

此次,使用了hitCallback,它所對應的函數將在成功發送事件信息後被調用。相似,HTML 代碼中這麼寫:url

<a href="http://www.example.com" onclick="trackOutboundLink('http://www.example.com'); return false;">Check out example.com

(以上兩段示例代碼來自 Google 官方文檔,連接見上文)spa

還能夠作得更好

原本教程到這裏就能夠結束了,但是還有一點值得說明。上述解決方法在絕大多數狀況下是徹底沒有問題的,可是除了一種狀況:瀏覽器沒法正常發送事件數據到 Google 服務器。例如,若是 Google 的服務器突然「沒法訪問」(你懂的),或者加載analytics.js失敗,那麼hitCallback就將永遠不會被調用。這種狀況下這個連接就變成點了也沒用的了。

在訪問 Google 徹底沒有問題的狀況下,這種情形天然沒必要考慮。不過爲了提供最大程度的保障,能夠人工加一個防護措施:

var trackOutboundLink = function(url) { var redirectTriggered = false; ga('send', 'event', 'outbound', 'click', url, {'hitCallback': function() { redirectTriggered = true; document.location = url; } }); setTimeout(function() { if (!redirectTriggered) { document.location = url; } }, 1500); }

即,在進入trackOutboundLink以後,設置 1500ms 的過時時間,若是時間到了尚未跳轉,就人工跳轉,保證訪客能夠正常訪問。

原文連接:https://www.renfei.org/blog/google-analytics-event-tracking-for-links.html