2010-11-21 12 views
1

Je crée un site dont le contenu principal est modifié par des appels Ajax, et je souhaite ajouter du code Google Analytics (en utilisant la méthode async _gaq). Je comprends que je dois pousser un événement _trackPageview avec l'URI à _gaq. 1) Je peux utiliser une propriété onclick (ou lier des événements avec JQuery) sur mes liens et formulaires, par exemple: onlink = "_ gaq.push (....)"Utiliser Ajax avec Google Analytics

2) Puisque mon code ajax peut traiter des scripts lors de la réception des données de la requête ajax, je peux ajouter l'appel _gaq.push (...) dans un tel extrait de script lors de la fourniture de la page ajaxée.

En utilisant la première option, je devine un code plus propre et plus concis. Cependant, les inconvénients sont que je dois me rappeler de mettre dans tous les liens et forme le code analytique, et si je l'utilise sur un formulaire avec validation JS, le clic est analysé par GA même si la validation échoue.

La deuxième option semble moins propre, mais résout les problèmes ci-dessus. Je peux avoir un code GA qui vérifie simplement si nous servons des pages ajax ou normales et produisons un extrait JS en conséquence. En outre, la soumission de formulaire n'est enregistrée que lorsqu'un formulaire est réellement soumis.

J'apprécierais toutes les pensées ou commentaires à ce sujet. Peut-être y a-t-il plus de considérations, ou des façons de le faire?

Merci Yaron

Répondre

4

Il y a des façons plus intelligentes de le faire si vous utilisez jQuery.

Une possibilité est de se lier à l'événement ajaxSuccess

$(document).ajaxSuccess(function(e, xhr, opt){ 
    _gaq.push(['_trackPageview', opt.url]); 
}); 

Ensuite, à partir de là tous les appels ajax jQuery déclenche cet événement et il poussera l'URL que vous avez demandé via Ajax à _gaq. Gardez à l'esprit qu'il va pousser les URL exactement comme vous l'avez demandé. Donc, si vous appelez:

$.ajax('http://www.mydomain.com/path') 

http://www.mydomain.com/path sera poussé à l'_gaq. Probablement ce n'est pas ce que tu veux. Il est donc préférable d'appeler .ajax comme ceci:

$.ajax('/path'); 

Maintenant, qui est seulement /path est poussé à _gaq.

Si vous avez vraiment besoin d'utiliser l'ensemble du domaine, il est préférable de nettoyer l'URL avant de l'envoyer à Google Analytics.

+0

Merci Eduardo, J'aime l'idée, et ont besoin d'examiner plus avant. Le seul inconvénient que je peux voir, c'est que si certains appels ajax ne sont pas destinés à être envoyés à l'analytique, j'aurais besoin d'une logique supplémentaire quelque part. Mais je suppose que c'est faisable. – Yaron

1

Je poste ceci comme une nouvelle réponse car c'est une approche différente.

Si vous ne souhaitez pas vous lier à l'événement global ajaxSucess, vous pouvez le faire manuellement à l'aide de reports.

$.ajax('/page').done(function(){ 
    _gaq.push(['_trackPageview', '/page']); 
}).done(function(response){ 
    // Do something with the response 
}); 

La mauvaise chose est que le fait rappel ne reçoivent pas l'URL. Donc, vous allez taper l'url deux fois.Puisque vous allez probablement faire deux ou trois fois, il peut être utile de créer une fonction d'assistance:

function GaAjax(url){ 
    return (function(u){ 
    return $.ajax(u).done(function(){ 
     _gaq.push(['_trackPageview', u]); 
    }); 
    })(url); 
} 

Maintenant, vous pouvez appeler au lieu de jQuery .ajax lorsque vous faites une demande Ajax devrait être envoyé à Google Analytics.

GaAjax('/page').done(function(){ 
    // Do something with the response 
});