16

这应该很简单,但无论我尝试什么,我都无法让它工作。我正在尝试将 Google Analytics 与 GWT 应用程序一起使用。据我了解,有两种方法可以做到:

首先是同步的,通过在 <head> 部分 HTML 页面的末尾插入跟踪代码,然后调用此方法:

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

其次是异步的,通过在 <body> 标记之后插入跟踪代码,然后调用此方法:

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 被加载,但仅此而已。

有人让 Google Analytics(分析)与 GWT 一起工作吗?此外, _gaq 是否接受页面名称作为 trackPageview 参数,因为我见过的所有示例都使用此调用:

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

(当然,这对我也不起作用。)

4

2 回答 2

23

这只是一个猜测,但您可能需要通过$wndJSNI 引用主机页面(包含 Google Analytics JS 代码的页面),如下所示:

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

JSNI 代码(通常是 GWT 代码)在 iframe 中运行以保持命名空间干净,这就是您需要$wnd对主窗口的引用的原因。

于 2010-03-16T20:46:39.073 回答
0
<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

于 2010-10-12T14:02:15.903 回答