En este momento no hay una buena solución a este problema. Lo mejor que puede hacer es agregar un tiempo de espera para retrasar la redirección. Actualmente no hay devolución de llamada a _trackPageview. Cuando vuelve, significa que comenzó el seguimiento, pero no está garantizado que haya registrado correctamente la página vista hasta que se complete la solicitud __utm.gif.
El tiempo de espera de 1 segundo puede ser demasiado. Por lo general, mantengo el tiempo de espera entre 200 y 400 ms.
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXX-X']);
_gaq.push(['_trackPageview']);
_gaq.push(function() {
setTimeout(function(){
window.location.href = newUrl;
}, 200);
});
EDIT:
Han pasado 2 años desde que originalmente publicado inicialmente esta respuesta y desde entonces Google Analytics ha recorrido un largo camino.
Ahora hay una forma correcta de hacer esto:
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXX-X']);
_gaq.push(['_set','hitCallback',function(){
window.location.href = newUrl;
}]);
_gaq.push(['_trackPageview']);
Y si ha migrado a Universal Analytics mediante analytics.js el equivalente sería:
ga('create', 'UA-XXXXXXX-X')
ga('send', 'pageview', {
'hitCallback': function() {
window.location.href = newUrl;
}
});
EDIT 2
Esta es la forma más adecuada de hacerlo para asegurarse de que su código se ejecuta incluso si el código de Google Analytics está bloqueado o manipulado por una extensión o 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
});
Ver http://stackoverflow.com/questions/8147065/google-analytics-async-events-tracking-callback –
¿Ha tratado de usar 'window.location.href = url' en lugar de' ventana. location.replace (url) '? – Eduardo
Mismo comportamiento con window.location.href = url :( – Amir