Dom*_*chi 16 gwt google-analytics google-analytics-api
这应该是非常简单的,但无论我尝试什么,我都无法工作.我正在尝试将Google Analytics与GWT应用程序结合使用.根据我的理解,有两种方法可以做到:
首先是同步,通过在<head>部分HTML页面的末尾插入跟踪代码,然后调用此方法:
public static native void recordAnalyticsHit(String pageName) /*-{
pageTracker._trackPageview(pageName);
}-*/;
Run Code Online (Sandbox Code Playgroud)
其次是异步,通过在<body>标签之后插入跟踪代码然后调用此方法:
public static native void recordAnalyticsHit(String pageName) /*-{
_gaq.push(['_trackPageview(' + pageName + ')']);
}-*/;
Run Code Online (Sandbox Code Playgroud)
但是,在运行这些方法时,我会在托管模式下获得此异常:
[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
Run Code Online (Sandbox Code Playgroud)
在观察Firebug中的网站时,我看到ga.js被加载了,但就是这样.
有没有人让Google Analytics与GWT合作?此外,_gaq是否接受页面名称作为trackPageview参数,因为我见过的所有示例都使用此调用:
_gaq.push(['_trackPageview()']);
Run Code Online (Sandbox Code Playgroud)
(当然,这对我也不起作用.)
Igo*_*mer 23
这只是猜测,但您可能需要$wnd在JSNI中引用主机页面(包含Google Analytics JS代码的主机页面),如下所示:
public static native void recordAnalyticsHit(String pageName) /*-{
$wnd.pageTracker._trackPageview(pageName);
}-*/;
Run Code Online (Sandbox Code Playgroud)
JSNI代码(通常是GWT代码)在iframe中运行以保持名称空间清洁,这就是您需要$wnd对主窗口的引用的原因.
| 归档时间: |
|
| 查看次数: |
7485 次 |
| 最近记录: |