Die Integration von Google Analytics in GWT-Anwendung
-
20-09-2019 - |
Frage
Dies sollte ganz einfach sein, aber ich kann es nicht egal bekommen arbeiten, was ich versuche. Ich versuche, Google Analytics mit GWT-Anwendung zu verwenden. Von dem, was ich verstanden habe, gibt es zwei Wege, es zu tun:
Zuerst ist synchron, durch Tracking-Code eingefügt am Ende des
Abschnitt HTML-Seite und dann diese Methode aufrufen:public static native void recordAnalyticsHit(String pageName) /*-{
pageTracker._trackPageview(pageName);
}-*/;
Zweitens ist asynchron, durch Tracking-Code eingefügt unmittelbar nach
-Tag und dann diese Methode aufrufen:public static native void recordAnalyticsHit(String pageName) /*-{
_gaq.push(['_trackPageview(' + pageName + ')']);
}-*/;
Bei jeder dieser Methoden ausgeführt wird, aber ich diese Ausnahmen erhalten in Host-Modus:
[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
Wenn Website in Firebug beobachtet, ich sehe, dass ga.js wird geladen, aber das ist es.
Hat jemand bekommen Analytics mit GWT zu arbeiten? Auch dann, wenn _gaq Seitennamen als Parameter track akzeptieren, da alle Beispiele, die ich habe Verwendung dieser Aufruf gesehen:
_gaq.push(['_trackPageview()']);
(Natürlich, das tut auch nicht Arbeit für mich.)
Lösung
Das ist nur eine Vermutung, aber Sie wahrscheinlich die Host-Seite (die, wo der Google Analytics JS-Code enthalten ist) über $wnd
im JSNI, wie diese verweisen müssen:
public static native void recordAnalyticsHit(String pageName) /*-{
$wnd.pageTracker._trackPageview(pageName);
}-*/;
JSNI Code (und in der Regel GWT-Code) in einem iframe führen Sie den Namensraum sauber zu halten, das ist, warum Sie den $wnd
Bezug auf das Hauptfenster benötigen.
Andere Tipps
<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>
Siehe http://www.google.com /support/analytics/bin/answer.py?hl=en&answer=55485 .