L'integrazione di Google Analytics in applicazione GWT
-
20-09-2019 - |
Domanda
Questo dovrebbe essere del tutto semplice, ma non riesco a farlo funzionare, non importa quello che cerco. Sto cercando di utilizzare Google Analytics con l'applicazione GWT. Da quello che ho capito, ci sono due modi per farlo:
In primo luogo è sincrona, con l'inserimento di codice di monitoraggio alla fine del
Pagina sezione HTML e quindi chiamando questo metodo:public static native void recordAnalyticsHit(String pageName) /*-{
pageTracker._trackPageview(pageName);
}-*/;
In secondo luogo è asincrona, con l'inserimento di codice di monitoraggio subito dopo tag
e quindi chiamando questo metodo:public static native void recordAnalyticsHit(String pageName) /*-{
_gaq.push(['_trackPageview(' + pageName + ')']);
}-*/;
Quando si esegue ciascuno di questi metodi, tuttavia, ottengo questo eccezioni in modalità hosted:
[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
Quando si osserva sito in Firebug, vedo che ga.js viene caricato, ma questo è tutto.
Qualcuno ottenere Analytics che lavorano con GWT? Inoltre, fa _gaq accettare nome della pagina come parametro di trackPageview, dal momento che tutti gli esempi che ho visto usare questa chiamata:
_gaq.push(['_trackPageview()']);
(naturalmente, che anche non funziona per me.)
Soluzione
Questa è solo una supposizione, ma probabilmente bisogno di fare riferimento alla pagina host (quello in cui è stato inserito il codice di Google Analytics JS) tramite $wnd
nel JSNI, in questo modo:
public static native void recordAnalyticsHit(String pageName) /*-{
$wnd.pageTracker._trackPageview(pageName);
}-*/;
Codice JSNI (e, in generale, GWT codice) viene eseguito in un iframe per mantenere lo spazio dei nomi pulita, è per questo che è necessario il riferimento $wnd
alla finestra principale.
Altri suggerimenti
<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>
http://www.google.com /support/analytics/bin/answer.py?hl=en&answer=55485 per i dettagli.