2014年7月25日 星期五

連結如何使用 GA 作事件追蹤 (event tracking)

GA event 可以做各種簡單和複雜的統計。但是如果要把 event 綁在 A link 上,則不是件容易的事,你會發現你的 event 無法傳到 GA server 上,因為 ga 還來不及送出去就被導頁了。一般要做這類的解法大概是:

  1. event.preventDefault()
  2. 發 request (beacon / event) 
  3. setTimeout(function(){ location.href = target_url;}, 300);
但是這個解法不好。因為會有一些使用者是按住 Ctrl, shift 或是 meta 按鈕,再點擊,讓視窗在新 tab 或是新視窗開啟。像 Yahoo 首頁就沒做到這一點。再者是,300ms 也不能保證什麼,設太長又會影響到網路快的使用者。

GA 提供一個 hit callback 的功能:
  • 原本是:ga('send', 'event', 'my category', 'my action', 'my label');
  • 改成是:ga('send', 'event', 'my category', 'my action', 'my label', {hitCallback:function(){ location.href = target_url;}});
也就是說,你不用瞎猜使用者端到底幾秒可以送達 GA ,這是保證的。這邊把相關功能包一包,支援按住 ctrl, shift 或 meta key
--