GAでaタグのクリックイベントを計測する場合に計測漏れが発生するようなので以下の対応を入れてみた。
アウトバウンド リンクをトラッキングする - アナリティクス ヘルプ
しかしこの方法だとnavigator.sendBeacon
に対応していないブラウザではloadイベントが発火する前にリンクをクリックすると、履歴に登録されず戻るボタンで戻れなくなる(さらに一つ前のページに戻る)現象が発生してしまうようだ。
試しにload
イベントが発火するより前に非同期でページ遷移してみると、元いたページの履歴が消失することが分かった。
// Chromeのコンソールから実行
setTimeout(function() {location.href="http://m.yahoo.co.jp/"});
navigator.sendBeacon
のブラウザの対応状況はあまりよろしくないようなので別の対策を講じる必要がある。
http://caniuse.com/#feat=beacon
-
loadを待つ
- なんとかビリティ的却下。
-
loadイベント発火前に遷移する場合は
history.pushState()
で履歴を登録してから遷移する- beaconよりは対応ブラウザが多い http://caniuse.com/#search=pushstate
-
clickイベントではなくtouchstart~touchendで送信する
- スマホサイトの場合はjQuery mobileのtapイベントで送信すればスマートフォンではclickまでデフォルトで300msディレイがあるため多少の計測漏れが防げる。
ちゃんと検証できてないですが、3の対応が現実的な気がします。
PCサイトやclickのディレイを無くしてる場合はどうしたらいいのだろうか。