当前位置:  开发笔记 > 编程语言 > 正文

将Google Analytics集成到GWT应用程序中

如何解决《将GoogleAnalytics集成到GWT应用程序中》经验,为你挑选了1个好方法。

这应该是非常简单的,但无论我尝试什么,我都无法工作.我正在尝试将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被加载了,但就是这样.

有没有人让Google Analytics与GWT合作?此外,_gaq是否接受页面名称作为trackPageview参数,因为我见过的所有示例都使用此调用:

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

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



1> Igor Klimer..:

这只是猜测,但您可能需要$wnd在JSNI中引用主机页面(包含Google Analytics JS代码的主机页面),如下所示:

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

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

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有