Como controlar marcas de âncora com o Google Analytics
-
06-07-2019 - |
Pergunta
Eu estou tentando rastrear cliques através do Google Analytics que não resultam em um novo pedido. Especificamente, clica em abas que são criados através do jQuery UI guias Widget . Eu estou usando a versão mais antiga do código ( 'ouriço do rastreador') e tentando registrar os cliques assim:
$('.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);
});
O mesmo método funciona, em outra instância, cuja única diferença significativa, tanto quanto eu posso dizer, é a falta de um símbolo cardinal (#) na cadeia. É que o personagem não é permitido em uma seqüência rastreado por urchinTracker()
, ou poderia haver alguma outra causa (que não seja ninguém ter clicado nos links!)?
Solução
Por padrão, o Google Analytics marcas de âncora . Para habilitá-lo para o código de controlo legado, use o seguinte formato:
_uanchor = 1;
urchinTracker(val);
A definição de um valor a _uanchor
variável é o equivalente a chamar o método _setAllowAnchor
quando se utiliza a mais recente base de código GA. (Você encontrará uma comparação detalhada na Google Analytics código de acompanhamento Guia de migração -. este link está desatualizado )
O método _setAllowAnchor
é descrito no site Google de referência .
Outras dicas
Em resumo, o Google Analytics não pode rastrear links em páginas que contêm um caractere '#'. Um clique no # foo index.html é tratado simplesmente como um clique em index.html, com tudo após o '#' ignorado.
Você poderia considerar escapar o caractere '#':
$('.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);
});
No seu exemplo, isso iria gravar uma exibição de página para /tab/?main
, que deve funcionar bem com o Google Analytics.
Se você deseja acompanhar em páginas cliques âncora, o seguinte seria trabalhar globalmente:
window.onhashchange = function() {
_gaq.push(['_trackPageview', location.pathname + location.search + location.hash]);
}
Tenha em atenção que, se você tem alguns manipuladores específica onclick
como
$('#someid a').click(function(event){
event.preventDefault();
var target = $(this).attr('href');
// some more clever stuff
});
Você precisa prefixar manualmente o hash para acionar o onhashchange
$('#someid a').click(function(event){
event.preventDefault();
var target = $(this).attr('href');
// triggers onhashchange
location.hash = target;
// some more clever stuff
});
Parece que você quer o acompanhamento de eventos do Google Analytics o exemplos usam onclick = "" lixo, mas eu aposto que você poderia provavelmente se ligam estes para eventos de clique jQuery também.
-
Eu tentei usar o método
_uanchor = 1;
. Que não trabalho. O motivo ele não funciona é que ele é projetado para enviar os parâmetros do Google Analytics como valores de hash, não enviar o valor de hash.A partir do guia citado no de Török Gábor resposta , estabelecendo
_uanchor
a um tem os seguintes efeitos:Quando ativado, usos
#
vez do?
padrão para separar a haste solicitação da string de consulta ??p>este é na seção 'Acompanhamento da campanha'.
-
O Rob Cavaleiro resposta funciona bem, mas eu fiz uma pequena modificação. No código pseudo:
if (href contains ?) { href = href.replace('#', '&'); } else { href = href.replace('#', '?'); }
Não tenho certeza se ele realmente importa para GA ter uma URL como foo.html&bar=baz
mas ele só parecia mais limpo para mim.
_gaq.push(['_setAllowAnchor', true]);