16

これは完全に単純なはずですが、何を試してもうまくいきません。GWT アプリケーションで Google アナリティクスを使用しようとしています。私が理解したことから、それを行うには2つの方法があります。

最初は同期です。HTML ページの <head> セクションの最後にトラッキング コードを挿入してから、次のメソッドを呼び出します。

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

2 番目は非同期で、<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 が読み込まれているのがわかりますが、それだけです。

Analytics を GWT で動作させた人はいますか? また、_gaq はページ名を trackPageview パラメータとして受け入れますか?

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

(もちろん、それも私にはうまくいきません。)

4

2 に答える 2

23

これは推測にすぎませんが$wnd、次のように JSNI でホスト ページ (Google Analytics JS コードが含まれているページ) を参照する必要がある可能性があります。

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

$wndJSNI コード (および一般的には GWT コード) は、名前空間をクリーンに保つために iframe で実行されます。そのため、メイン ウィンドウへの参照が必要です。

于 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 に答える