質問: 以下のソースは、 aタグのonclickにGoogle Analyticsのクリックイベントを埋め込んでいます。 ひとつはgoogle.comへ遷移するaタグ。 もうひとつは遷移しないaタグです。 アンドロイド端末の古いバージョンのブラウザで開いて「外部サイトへ遷移する場合」のaタグをクリックしたところ、 アクセスは認識しているのですが棒グラフが現れません。 外部に遷移しなければ棒グラフは現れます。 Chromeバージョン26.0.1410.58では棒グラフが現れず、 最新バージョン59.0.3071.125にアップデートしたら棒グラフが現れるようになりました。 以下のコードでは古いブラウザに対応できないようですので、 可能な限り多くのブラウザで正しくアクション測定をするにはどう修正すれば良いでしょうか? ``` <スクリプト> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-00000000-1', 'auto'); ga('require', 'displayfeatures'); ga('send', 'pageview'); スクリプト> 外部サイトへ遷移する場合 しない場合 ``` ### 追記 おそらくトラッキングの送信が完了するまえに遷移してしまうことで正しく計測できないものと思われます。 aタグにtarget="_blank"を追加すると計測できるようになりました。 だた、できれば別タブは開かせたくないです。 ### 追記2 もしかしてなんですが リアルタイムイベントの画面で、 「現在xx人のアクティブユーザーがサイトを訪問しています」 の数と イベント発火数は必ずしも一致はしないという仕様でしょうか?
回答: ``` ga('send', 'event', 'HELLO', 'click', 'WORLD', 1); ``` の箇所で、ヒットコールバックを利用するようにする方法があります。 ``` ga('send', 'event', 'HELLO', 'click', 'WORLD', 1, { hitCallback: function() { // イベント送信後に実行したい内容を記述。今回の場合は、リンク遷移。 } }); // 標準のイベントをキャンセルする。 ``` ただし、この方法の場合、何らかの理由でイベント送信に失敗した場合にリンクが機能しなくなってしまうため、setTimeoutなどを併用して2〜3秒経過してもhitCalbackが呼び出されない場合は強制的にhitCallback内の関数を実行する、などの対処を考えるのがよいと思います。 もしくは、最初から ``` ga('send', 'event', 'HELLO', 'click', 'WORLD', 1, { transport: 'beacon' }); ``` として、`navigator.sendBeacon`が使えるブラウザであれば、sendBeaconを使ってビーコン送信を行うようにする最小限のプランも考えられます。 詳細は、 * https://developers.google.com/analytics/devguides/collection/analyticsjs/events * https://developers.google.com/analytics/devguides/collection/analyticsjs/sending-hits#knowing_when_the_hit_has_been_sent にも記載があるので、合わせてご確認ください。