Интеграция Google Analytics в приложение GWT - PullRequest
16 голосов
/ 16 марта 2010

Это должно быть совершенно просто, но я не могу заставить его работать, что бы я ни пытался. Я пытаюсь использовать Google Analytics с приложением GWT. Из того, что я понял, есть два способа сделать это:

Сначала выполняется синхронно, вставляя код отслеживания в конце HTML-страницы раздела , а затем вызывая этот метод:

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

Второй является асинхронным, вставляя код отслеживания сразу после тега и затем вызывая этот метод:

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

Однако при запуске каждого из этих методов я получаю исключения в размещенном режиме:

[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

При просмотре сайта в Firebug я вижу, что ga.js загружается, но это все.

Кто-нибудь работал с GWT в Google Analytics? Кроме того, _gaq принимает имя страницы в качестве параметра trackPageview, поскольку все примеры, которые я видел, используют этот вызов:

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

(Конечно, это также не работает для меня.)

Ответы [ 2 ]

23 голосов
/ 16 марта 2010

Это всего лишь предположение, но вам, вероятно, нужно сослаться на главную страницу (ту, на которой был включен код JS Google Analytics) через $wnd в JSNI, например:

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

Код JSNI (и вообще код GWT) запускается в iframe для поддержания чистоты пространства имен, поэтому вам нужна ссылка $wnd на главное окно.

0 голосов
/ 12 октября 2010
<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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...