Pregunta

Esto debería ser totalmente sencilla, pero no puedo hacerlo funcionar, no importa lo que intento. Estoy intentando utilizar Google Analytics con la aplicación GWT. Por lo que entendí, hay dos vías para hacerlo:

En primer lugar es síncrona, mediante la inserción de un código de seguimiento al final de página de la sección HTML y luego llamar a este método:

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

En segundo lugar es asíncrona, mediante la inserción de un código de seguimiento justo después de la etiqueta y luego llamar a este método:

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

Cuando se ejecuta cada uno de esos métodos, sin embargo, consigo este excepciones en modo de host:

[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

Al observar sitio en Firebug, veo que ga.js. se carga, pero eso es todo.

¿Alguien recibió Analytics que trabajan con GWT? Además, hace _gaq aceptar nombre de la página como parámetro trackPageview, ya que todos los ejemplos que he visto utilizar esta llamada:

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

(Por supuesto, eso también no funciona para mí.)

¿Fue útil?

Solución

Esto es sólo una suposición, pero probablemente necesitará para hacer referencia a la página principal (aquel en el que se ha incluido el código de Google Analytics JS) a través de $wnd en el JSNI, como esto:

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

Código JSNI (y en general, el código de GWT) se ejecuta en un marco flotante para mantener limpio el espacio de nombres, es por eso que necesita la referencia $wnd a la ventana principal.

Otros consejos

<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 para más detalles.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top