今、この問題の良い解決策はありません。あなたができることは、リダイレクトを遅らせるためにタイムアウトを加えることです。現在、_trackPageviewへのコールバックはありません。それが返ってくると、それは追跡を開始したことを意味しますが、__utm.gifリクエストが完了するまでページビューを正常に登録したことは保証されていません。
1秒のタイムアウトが多すぎる可能性があります。私は通常200〜400ミリ秒程度のタイムアウトを保ちます。
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXX-X']);
_gaq.push(['_trackPageview']);
_gaq.push(function() {
setTimeout(function(){
window.location.href = newUrl;
}, 200);
});
編集:私はもともと最初にこの答えを投稿して以来、Google Analyticsは、長い道のりを歩んできましたので、それは2年ぶりだ
。
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXX-X']);
_gaq.push(['_set','hitCallback',function(){
window.location.href = newUrl;
}]);
_gaq.push(['_trackPageview']);
そして、あなたが同等のanalytics.js使用してユニバーサルアナリティクスに移行した場合は、次のようになります:
ga('create', 'UA-XXXXXXX-X')
ga('send', 'pageview', {
'hitCallback': function() {
window.location.href = newUrl;
}
});
EDIT 2
は今これを行うための適切な方法があります
これは、Googleアナリティクスのコードがブロックされたり改ざんされてもコードを実行するための適切な方法ですエクステンションまたはadBlockerによって
var t = undefined;
var myCode = function(){
window.clearTimeout(t);
t = undefined;
window.location.href = newUrl;
};
t = setTimeout(myCode, 3000);
ga('create', 'UA-XXXXXXX-X')
ga('send', 'pageview', {
'hitCallback': myCode
});
あなたは 'window.location.href = url'の代わりに、'ウィンドウを使用しようとしましたhttp://stackoverflow.com/questions/8147065/google-analytics-async-events-tracking-callback –
参照してください。 location.replace(url) '? – Eduardo
window.location.href = url :( – Amir