javascript - tag - send pageview google analytics
Uso del código asincrónico de Google Analytics desde un archivo JS externo (3)
Estoy intentando agregar la versión asíncrona del código de seguimiento de Google Analytics a un sitio web.
Me gustaría mantener el JavaScript en un archivo separado y llamarlo desde allí.
Esto es lo que tengo actualmente en mi archivo .js:
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != ''function'') {
window.onload = func;
} else {
window.onload = function() {
oldonload();
func();
}
}
}
function loadtracking() {
var _gaq = _gaq || [];
_gaq.push([''_setAccount'', ''UA-XXXXXXX-X'']);
_gaq.push([''_trackPageview'']);
(function() {
var ga = document.createElement(''script''); ga.type = ''text/javascript''; ga.async = true;
ga.src = (''https:'' == document.location.protocol ? ''https://ssl'' : ''http://www'') + ''.google-analytics.com/ga.js'';
var s = document.getElementsByTagName(''script'')[0]; s.parentNode.insertBefore(ga, s);
})();
}
addLoadEvent(loadtracking);
Y esto es lo que tengo en la etiqueta <head>
de mi página maestra:
<script type="text/javascript" src="js/google-analytics.js" ></script>
Sin embargo, obviamente hay un problema ya que después de unos días, ¡no estoy obteniendo estadísticas!
¿Alguna idea de lo que necesito cambiar?
Gracias, Neil
EDITAR: Ok ... Después de algunos comentarios a continuación, voy a agregar los nuevos contenidos actuales de mi archivo .js. Lo mantendré actualizado para que, cuando esto se resuelva, esperemos que ayude a otras personas que intentan hacer cosas similares.
var _gaq = _gaq || [];
function loadtracking() {
window._gaq.push([''_setAccount'', ''UA-XXXXXXX-X'']);
window._gaq.push([''_trackPageview'']);
(function() {
var ga = document.createElement(''script''); ga.type = ''text/javascript''; ga.async = true;
ga.src = (''https:'' == document.location.protocol ? ''https://ssl'' : ''http://www'') + ''.google-analytics.com/ga.js'';
var s = document.getElementsByTagName(''script'')[0]; s.parentNode.insertBefore(ga, s);
})();
}
loadtracking();
Honestamente, no he leído todas estas publicaciones porque son bastante antiguas. Sin embargo, recientemente tuve la necesidad de agregar Gtag (gestor de etiquetas de Google para seguimiento analítico) a un sitio web antiguo que era un 1000 archivos HTML estáticos y (LUCKILY) a los archivos html tenían un único archivo js para la barra de menú de Spry, como yo dijo muy antiguo sitio! Para mis propósitos, no me preocupaba el rendimiento, sino medir el tráfico para poder migrarlo. su caso puede ser diferente pero el código a continuación funcionará para js externos incluye de Gtag.
Utilicé este archivo para cargar el código siguiente, ya que el código anterior es para legacy ga.js
//Added Google Anyltics Tag Container Tracking - included here to min rebuilding DOM
function loadGoogleAnalytics(){
var ga = document.createElement(''script'');
ga.type = ''text/javascript'';
ga.async = true;
ga.src = ''https://www.googletagmanager.com/gtag/js?id=UA-XXXXXXXXX-X'';
var s = document.getElementsByTagName(''script'')[0];
s.parentNode.insertBefore(ga, s);
}
loadGoogleAnalytics(); //Create the script
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag(''js'', new Date());
gtag(''config'', ''UA-XXXXXXXXX-1'');
//Confirmed with Google tag Assistant
Olvidas por completo el punto del código de seguimiento asíncrono. No lo coloque en un archivo externo porque eso es exactamente como incluir el antiguo GA sincrónico.
Y lo más importante, no difiera el código de seguimiento para window.onload
ya que puede disparar demasiado tarde.
Si usa la GA asíncrona, simplemente colóquela en la parte superior de su documento en una etiqueta de script en línea . Esta es la recomendación en el sitio web de Google Analytics también.
Inserte el fragmento asincrónico en la parte inferior de la sección
<head>
de sus páginas, después de otros scripts que pueda usar su página o plantilla.
Su definición variable var _gaq
está dentro de una función. Eso significa que tiene un alcance local dentro de esa función y no existirá globalmente. Google Analytics depende de la variable global _gaq
. Si desea mantenerlo dentro de una función como esa, window._gaq
como window._gaq
.