这应该是非常简单的,但无论我如何尝试,我都无法让它工作。我正在尝试将 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 已加载,但仅此而已。
有人让 Analytics 与 GWT 一起使用吗?另外,_gaq 是否接受页面名称作为 trackPageview 参数,因为我见过的所有示例都使用此调用:
_gaq.push(['_trackPageview()']);
(当然,这对我来说也不起作用。)
最佳答案
这只是一种猜测,但您可能需要通过 JSNI 中的 $wnd
引用主机页(包含 Google Analytics JS 代码的主机页),如下所示:
public static native void recordAnalyticsHit(String pageName) /*-{
$wnd.pageTracker._trackPageview(pageName);
}-*/;
JSNI 代码(通常是 GWT 代码)在 iframe 中运行以保持命名空间干净,这就是为什么您需要对主窗口的 $wnd
引用。
关于gwt - 将 Google Analytics 集成到 GWT 应用程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2457794/