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.)

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top