- event.preventDefault()
- 發 request (beacon / event)
- 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
--