1

ASPX Web アプリケーションに analytics.js (新しいバージョン) を実装しました。ページビューは問題なく動作しましたが、イベントが送信されないことがよくあります。

私の例では、3 つの異なるボタンを押してみましたが、そのうちの 1 つだけがイベントを発生させました。各イベントに警告ボックスを追加して、実際に発生したことを確認し、これらすべてが表示されるようにしました。

フィドラー これは私の js で、</head>

(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', '//www.google-analytics.com/analytics.js', 'ga');
ga('create', 'UA-XXXXXXXX-1', {
    'cookieDomain': 'none'
});
ga('send', 'pageview', {
    'page': '/team/main',
    'title': 'Logged in'
});

$(document).ready(function() {
    $(".team_button").on("click", function() {
        ga('send', 'event', 'button', 'click', 'Team select button', {
            'page': '/team/'
        })
    });
    $(".calendar_month_prev").on("click", function() {
        ga('send', 'event', 'button', 'click', 'Calendar: Prev month', {
            'page': '/team/'
        })
    });
    $(".calendar_month_next").on("click", function() {
        ga('send', 'event', 'button', 'click', 'Calendar: Next month', {
            'page': '/team/'
        })
    });
    $(".calendar_day_selected").on("click", function() {
        ga('send', 'event', 'button', 'click', 'Calendar: Same day reload', {
            'page': '/team/'
        })
    });
    $(".calendar_day_active").on("click", function() {
        ga('send', 'event', 'button', 'click', 'Calendar: Select day', {
            'page': '/team/'
        })
    });
});

4

4 に答える 4

5

新しいページが読み込まれると、現在のページで保留中のリクエスト (この場合は分析トラッキング ピクセル リクエスト) がキャンセルされます。「非同期」とは、分析 JavaScript コードの読み込みと、分析データの処理のことを指しています。

ga.js では、クリック イベントの伝播を停止し、イベントを送信してから、リンクをたどる前に少し (150 ミリ秒) 遅らせるという方法が一般的です。

analytics.js を使用すると、遅延の代わりにhitCallback、分析データが送信された後にコードを実行するために使用できます。Google アナリティクス ドキュメントのヒット コールバックの設定を参照してください。

于 2013-08-25T15:30:46.957 に答える
1

さて、他の誰かが同じ問題を抱えている場合、これが私がそれを修正した方法です:

分析トラッキングを呼び出す関数を作成しました。ここで、ページをほんの一瞬遅らせました。

function TrackEvent(link, category, action, label, page) {
    try {
        ga("send", "event", category, action, label, { 'page': page });
    } catch (err) { consol.log(err); }

    setTimeout(function () {
        document.location.href = link.href;
    }, 25);
}

次に、各 onClick バインドが次のようにこの関数を呼び出します。

$(document).ready(function () {
    $(".calendar_month_prev").on("click",function(){ TrackEvent(this, 'button', 'click', 'Calendar: Prev month', '/team/main'); return false;});
    $(".calendar_month_next").on("click",function(){ TrackEvent(this, 'button', 'click', 'Calendar: Next month', '/team/main'); return false;});
    $(".calendar_day_active").on("click",function(){ TrackEvent(this, 'button', 'click', 'Calendar: Select day', '/team/main'); return false;});
});

これが望ましい場合は、おそらくこれを a href onClick に追加するだけで済みます:)

于 2013-08-25T19:22:50.773 に答える
1

イベント登録が成功した後、ダミーのアンカー クリックを実行することをお勧めします。

a.onclick = function(e){
            var anchor = this;
            _gaq.push(['_trackEvent', 'Category','event','label']);
            _gaq.push(function() {
                var a = document.createElement('a');
                a.href = anchor.href;
                a.target = anchor.target;
                a.click();
            });
            return false;
        }

プッシュはキューとして機能するため、イベント リクエストがキャンセルされることはありません。

于 2013-08-26T11:11:49.133 に答える