2009-10-24 5 views
2

j'ai posté sur ce il y a un certain temps, et ont depuis fait plus de recherches et avancé le problème, mais je ne comprends toujours pas une solution ...fonction Google Analytics pageTracker ne fonctionne pas lorsqu'il est chargé via AJAX

J'ai un site (www.seatgeek.com) où beaucoup de liens sont chargés via AJAX. Lorsqu'un utilisateur clique sur l'un de ces liens, je veux le considérer comme un objectif. J'ai donc essayé d'attacher pageTracker._trackPageview() à l'attribut onClick des liens. Mais GA n'enregistre pas ces clics, et je ne sais pas pourquoi. Voici le code pour un de ces liens:

<a href="<?php echo $tickets[$x][3] ?>" target = "_blank" class="buyTicketsLink" onClick="pageTracker._trackPageview('/outgoing/event4.php');">BUY TICKETS</a> 

J'ai essayé le code ci-dessus dans des situations où le lien n'est pas chargé via AJAX et il fonctionne très bien, il est certainement un problème spécifique à AJAX. De plus, dans mes tentatives pour résoudre ce problème, je l'ai également essayé d'ajouter les événements onclick programme, .: par exemple

<script> 
function attach_goal_tracking() { 
var links = document.getElementsByClassName("buyTicketsLink"); 
for(var i=0; i<links.length; i++) { 
links[i].onclick = record_goal; 
} 
} 

function record_goal() { 
pageTracker._trackPageview('/event/outgoing'); 
} 
</script> 

Cela ne fonctionne pas non plus. Mais lorsque j'ajoute une boîte d'alerte de test à la fonction record_goal(), il est clair que la fonction est en cours d'exécution. Par exemple, si je change la fonction à ceci:

function record_goal() { 
alert('Hello'); 
pageTracker._trackPageview('/event/outgoing'); 
} 

Ensuite, la zone d'alerte « Hello » affiche quand un lien est cliqué. Mais la page vue vers '/ event/outgoing' n'est toujours pas enregistrée.

Je suis complètement déconcerté par ce qui pourrait être à l'origine de cela. Tout avis serait grandement apprécié.

+1

Pourquoi est-ce vous postez une question séparée au lieu d'éditer la précédente? http://stackoverflow.com/questions/1554486/google-analyics-doesnt-track-links-generated-with-ajax –

Répondre

1

Utilisez-vous une bibliothèque JavaScript telle que Prototype? document.getElementsByClassName n'est pas une méthode DOM JavaScript standard.

Avez-vous des erreurs JavaScript? Par exemple. ouvrez Firebug ou la console d'erreur Firefox.

Dans Firebug, si vous tapez pageTracker; dans la console, cela vous dit-il que pageTracker est définitivement une fonction et non undefined?

+0

(1) Oui, j'utilise Prototype. Mais je suis sûr que document.getElementByClassName fonctionne dans ce cas parce que l'alerte ('Hello') fonctionne quand je m'en tiens à cela. (2) Non, je ne reçois aucune erreur JavaScript. (3) Lorsque j'utilise Firebug pour inspecter des liens, puis cliquez sur l'onglet DOM, pageTracker a la valeur "Objet b = fenêtre r = 1256426203 s = UA-XXXXXXX-9". Est-ce ce que vous voulez dire? – Jack7890

+0

OK, de sorte que tout sonne bien. GA _is_ étant initié et votre JavaScript ne génère pas d'erreurs. Le problème est alors autre chose. – Premasagar

+0

Ouais, merci pour les pensées, vous avez certainement raison. Je ne peux pas comprendre ce que "quelque chose d'autre" pourrait être. – Jack7890

1

Essayez d'ajouter "return false" après votre trackPageview() appel, alors ...

onClick="pageTracker._trackPageview('/outgoing/event4.php'); return false"> 

Notre représentant Analytics m'a recommandé cela et cela a fonctionné comme un charme. "return false" dit habituellement, "hey ne fais pas attention à l'href" (je pensais, de toute façon), mais ma mise en œuvre fonctionne très bien.

Espérons que cela aide!

1

Si vous utilisez encore la méthode asynchrone de chargement Google Analytics, l'extrait suivant accomplira la même tâche:

 
_gaq.push(['_trackPageview', '/anything']); 

ou (code @Lauren)

 
onClick="_gaq.push(['_trackPageview', '/outgoing/event4.php']); return false"> 
Questions connexes