Это должно быть полностью просто, но я не могу получить его работа независимо от того, что я пробую. Я пытаюсь использовать Google Analytics с приложением GWT. Из того, что я понял, существует два способа сделать это:
Сначала синхронно, путем введения отслеживания кода в конце страницы HTML раздела <head> и затем вызова этого метода:
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? Кроме того, делает _gaq, принимают название страницы как trackPageview параметр, начиная со всех примеров, я видел использование этот вызов:
_gaq.push(['_trackPageview()']);
(Конечно, который также не работает на меня.)
Это всего лишь предположение, но вам, вероятно, нужно ссылаться на главную страницу (ту, куда был включен JS-код Google Analytics) через $wnd
в JSNI, например, так:
public static native void recordAnalyticsHit(String pageName) /*-{
$wnd.pageTracker._trackPageview(pageName);
}-*/;
Код JSNI (и вообще код GWT) запускается в iframe, чтобы сохранить чистоту пространства имен, поэтому вам нужна ссылка $wnd
на главное окно.