21
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GoogleAnalyticsで非同期トラッキングのコールバックを受け取る

Last updated at Posted at 2013-02-25

概要

そんな気はしてたけど、下記のようにonclick_gaq.push()するとページ遷移でトラッキングが中断されて計測漏れすることがあるらしい。

<a href="hoge.html" onclick="_gaq.push(['_trackPageview', 'click/hoge']);">hogeへ</a>

_trackPageView_trackEventのコールバックを設定できるようになったので、トラッキング完了してからページ遷移することで計測漏れをなくせるはず。

_gaq.push(['_trackPageview', {
  page       : 'click/hoge',
  hitCallback: function () {
    console.log('トラッキング完了!');
  }
}]);

コールバックを使ってトラック完了後にページ遷移する

注意点としては、CtrlCommandを押下しながらのリンククリックや、target_self以外の時は別窓で開くのでそもそもコールバックで何かする必要はないということ。同じ窓でページ遷移する場合のみコールバックでページ遷移する(if内の処理)。

$.extend($, {
  gaPageview: function(page, callback) {
    _gaq.push([
      '_trackPageview', {
        page: page,
        hitCallback: callback
      }
    ]);
  }
});
$.fn.extend({
  gaPageview: function(attr) {
    return this.on('click', function(e) {
      var $el, callback, page, target;
      $el = $(this);
      page = $el.attr(attr);
      if (page == null) {
        return;
      }
      if ($el.is('a')) {
        target = $el.attr('target');
        if (!e.ctrlKey && !e.metaKey && (!target || target === '_self')) {
          e.preventDefault();
          callback = function() {
            location.href = $el.attr('href');
          };
        }
      }
      $.gaPageview(page, callback);
    });
  }
});

こんな感じでjQueryを拡張しておくと、下記のように設定も楽。

$(function () {
  $('a[data-ga]').gaPageview('data-ga');
});
<ul>
  <li><a href="#hoge" data-ga="internal">internal</a></li>
  <li><a href="dummy.html" data-ga="none">none</a></li>
  <li><a href="dummy.html" target="" data-ga="empty">empty</a></li>
  <li><a href="dummy.html" target="_self" data-ga="_self">_self</a></li>
  <li><a href="dummy.html" target="_blank" data-ga="_blank">_blank</a></li>
  <li><a href="dummy.html" target="dummy" data-ga="dummy">dummy</a></li>
</ul>

関連記事

Googleアナリティクス非同期コードにおける新しいAPIについて|コラム アユダンテ株式会社
Advanced Configuration - Web Tracking (analytics.js) - Google Analytics — Google Developers
JavaScript - この夏Google Analyticsが新しくなるって知ってた?Universal Analyticsを予習しよう - Qiita [キータ]

21
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?