2010-03-16 11 views
16

Cela devrait être totalement simple, mais je ne peux pas le faire fonctionner peu importe ce que j'essaie. J'essaie d'utiliser Google Analytics avec l'application GWT. D'après ce que je compris, il y a deux façons de le faire:Intégration de Google Analytics dans l'application GWT

premier est synchrone, en insérant le code de suivi à la fin de la page < tête > section HTML puis d'appeler cette méthode:

public static native void recordAnalyticsHit(String pageName) /*-{ 
    pageTracker._trackPageview(pageName); 
}-*/; 

deuxième est asynchrone, en insérant le code de suivi juste après < corps étiquette > puis appeler cette méthode:

public static native void recordAnalyticsHit(String pageName) /*-{ 
    _gaq.push(['_trackPageview(' + pageName + ')']); 
}-*/; 

Lors de l'exécution de chacune de ces méthodes, cependant, je reçois cette exception dans hos Mode ted:

[ERROR] [myproject] Uncaught exception escaped 
com.google.gwt.core.client.JavaScriptException: (ReferenceError): pageTracker is not defined 

[ERROR] [myproject] Uncaught exception escaped 
com.google.gwt.core.client.JavaScriptException: (ReferenceError): _gaq is not defined 

En observant site dans Firebug, je vois que ga.js à être chargée, mais qui est à ce sujet.

Quelqu'un a-t-il fait fonctionner Google Analytics avec GWT? En outre, ne _gaq accepte la page nom comme paramètre trackPageview, puisque tous les exemples que je l'ai vu utiliser cet appel:

_gaq.push(['_trackPageview()']); 

(. Bien sûr, cela ne fonctionne pas non plus pour moi)

+4

Juste pour que vous connaissiez _gaq.push (['_ trackPageview()']); était un bug dans la documentation de Google. Il devrait être _gaq.push (['_ trackPageview']); sans les parens. – Brian

+1

vous pouvez utiliser gwt-gatracker (https://code.google.com/p/gwt-gatracker/) ce qui rend votre vie beaucoup plus facile –

Répondre

23

C'est juste une supposition, mais vous avez probablement besoin de faire référence à la page d'accueil (celui où le code JS Google Analytics a été inclus) via $wnd dans le JSNI, comme ceci:

public static native void recordAnalyticsHit(String pageName) /*-{ 
    $wnd.pageTracker._trackPageview(pageName); 
}-*/; 

Code JSNI (et en général, GWT code) est exécuté dans un iframe pour garder l'espace de noms propre, c'est pourquoi vous avez besoin la référence $wnd à la fenêtre principale.

+1

Oui, c'était tout. Merci. – Domchi

+1

Cela fonctionnerait bien sûr aussi avec GA async: $ wnd._gaq.push (['_ trackPageview', nompage]); – Brian

0
<script type="text/javascript"> 
    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); 
    document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); 
</script> 

<script type="text/javascript"> 
    var pageTracker = _gat._getTracker("UA-xxxxxx-x"); 
    pageTracker._trackPageview("/subdirectory/pagename"); 
</script> 

Voir http://www.google.com/support/analytics/bin/answer.py?hl=en&answer=55485 pour plus de détails.

+0

Antonio, pouvez-vous élaborer votre réponse? La question portait sur l'appel de Google Analytics à partir du code Java GWT. – Domchi

+0

En fait, je voulais juste dire deux choses: 1) ga.js devrait être inclus avant que le code GWT l'appelle; 2) $ wnd.pageTracker._trackPageview (pageName); ne fonctionne pas pour moi et j'ai dû utiliser le code que j'ai trouvé dans la FAQ officielle de Google. – Antonio