2009-07-31 28 views
8

Estoy intentando rastrear clics a través de Google Analytics que no dan como resultado una nueva solicitud. Específicamente, hace clic en las pestañas que se crean a través del jQuery UI tabs widget. Estoy usando la versión anterior del código ('erizo de seguimiento') y tratando de registrar los clics, así:Cómo rastrear etiquetas de anclaje con Google Analytics

$('.ui-tabs-nav li a').click(function() { 
    val = "/tab/" + $(this).attr('href'); 

    // when uncommented, the following line reports, for example: 
    // /tab/#main 
    // as expected. 
    // console.log(val); 

    res = urchinTracker(val); 
}); 

El mismo método funciona, en otro caso, cuya única diferencia significativa, por lo que yo puede decir, es la falta de un símbolo hash (#) en la cadena. ¿No se permite ese carácter en una cadena rastreada por urchinTracker(), o podría haber alguna otra causa (que no haya hecho clic en ninguno de los enlaces)?

Respuesta

8

De forma predeterminada, Google Analytics deshabilita tracking anchor tags. Para habilitarlo para el código de seguimiento legado, utilice el siguiente formulario:

_uanchor = 1; 
urchinTracker(val); 

Establecer un valor a la variable _uanchor es el equivalente de una llamada al método _setAllowAnchor cuando se utiliza la última base de código GA. (Encontrará una comparación detallada en el Google Analytics Tracking Code Migration Guide - este enlace está desactualizado).

El método _setAllowAnchor se describe en el Google Reference Site.

+3

A menos que me esté perdiendo algo, esto está completamente mal. Esta técnica solo es válida para páginas de destino (generalmente, seguimiento de campañas), no para enlaces anclados en la página. – pdeschen

+1

Hoy en día (mayo de 2013) esta sería probablemente la forma de manejarlo: http://stackoverflow.com/a/6756202/565110 –

+1

Esta respuesta es, de hecho, incorrecta, y no se debe aceptar. '_setAllowAnchor' hace que GA interprete el símbolo' # 'como el delimitador para los parámetros de URL de la campaña, en lugar del carácter'? '. De los documentos: "Si establece esta opción en verdadero, las URL de seguimiento de su campaña pueden usar un signo de libra (#) en lugar del signo de interrogación (?) Para indicar el comienzo de la cadena de consulta." De nuevo, esto no tiene nada que ver con el seguimiento de clics en enlaces cuyo 'src' se refiere a un ancla en la página. – steveluscher

3

En resumen, Google Analytics no puede rastrear enlaces en la página que contengan un carácter '#'. Un clic en index.html # foo se trata simplemente como un clic en index.html, con todo después de que se haya ignorado el '#'.

Usted podría considerar evadir el carácter '#':

$('.ui-tabs-nav li a').click(function() { 
    val = new String("/tab/" + $(this).attr('href')).replace('#', '&'); 

    // when uncommented, the following line reports, for example: 
    // /tab/#main 
    // as expected. 
    // console.log(val); 

    res = urchinTracker(val); 
}); 

En el ejemplo, este sería grabar una vista de página para /tab/?main, que debería funcionar bien con Google Analytics.

+0

Gracias por la sugerencia. De hecho, estoy probando un enfoque similar en el que simplemente llamo a .substring (1) para soltar el '#' inicial. Si esto funciona (¡por supuesto, toma un tiempo confirmar esto!) Aceptaré su respuesta. –

+0

Sí, definitivamente parece ser eso. Has subido tu respuesta. –

+0

Por cierto, ¿cómo sabes esto? No pude encontrar esa información en el sitio de Google en ninguna parte. Obviamente, tiene sentido que funcione de esa manera, pero pensé que el script podría diferenciar entre un hit de seguimiento implícito que contiene un identificador de fragmento y una llamada explícita a la función de seguimiento. –

0

Parece que quieres Google Analytics Event Tracking los ejemplos usan onclick = "" basura, pero apuesto a que probablemente también puedas unir estos a los eventos de jQuery click.

0
  1. He intentado utilizar el método _uanchor = 1;. Eso no funciona. El motivo por el que no funciona es porque está diseñado para enviar los parámetros de Google Analytics como valores hash, no para enviar su valor hash.

    De la guía citada in Török Gábor's answer, el establecimiento de _uanchor a uno tiene los siguientes efectos:

    Cuando está activado, utiliza # en lugar del predeterminado ? para separar la solicitud se derivan de la cadena de consulta

    esto está en la sección 'Seguimiento de campaña'.

  2. Rob Knight's answer funciona bien, pero hice una pequeña modificación. En pseudocódigo:

    if (href contains ?) { 
    href = href.replace('#', '&'); 
    } else { 
    href = href.replace('#', '?'); 
    } 
    

No estoy seguro si lo que realmente importa a la anestesia general para tener una URL como foo.html&bar=baz pero parecía limpio para mí.

1

Si desea realizar un seguimiento de los clics de anclaje en-página, la siguiente funcionaría a nivel mundial:

window.onhashchange = function() { 
    _gaq.push(['_trackPageview', location.pathname + location.search + location.hash]); 
} 

Mira que si usted tiene algunas onclick gestores específicos tales como

$('#someid a').click(function(event){ 
    event.preventDefault(); 
    var target = $(this).attr('href'); 
    // some more clever stuff 
}); 

que tendría que preceder manualmente el hash para activar el onhashchange

$('#someid a').click(function(event){ 
    event.preventDefault(); 
    var target = $(this).attr('href'); 
    // triggers onhashchange 
    location.hash = target; 
    // some more clever stuff 
}); 
Cuestiones relacionadas