2011-10-28 7 views
1

Googleアナリティクスに記録されないイベントの多く(20%)に問題があります。これらは、フォームを投稿する画像ボタンにonclickで呼び出されるすべてのイベントです。ブラウザが次のページに移動する前に、コードがGoogleにイベントを送信するのに十分な速さで実行されていないと考えています。Googleアナリティクスの非同期追跡における競合状態の回避

私がしたいことは、_gaqのキューの状態をチェックし、自分のJavascriptを完了する前に保留中のイベントがないことを確認することです。

_gaqは少しわかりにくいようですが、公開されているプロパティはあります。私は、簡単なコマンドを使ってChromeでテストしてきた:

console.log(_gaq.u); 

残念ながら、これは常に_gaq.pushコマンドの直後に実行しても、0を返します。もちろん、Chromeはポストが発生する前にGoogleにイベントを送信するように見えるので、問題を再現できないためChromeでデバッグできるかどうかはわかりません。

_gaqからキュー内の保留中のアイテムの数を取得する方法があるかどうかは知りませんか? _gaq.uは適切なプロパティですか?すべてのイベントで100〜200ミリ秒待つだけではなく、もう少しエレガントなことをしたいと思います。

答えて

4

_gaqは2段階です。

最初に、ga.jsがロードされる前に、その配列が引数の関数名または実際の関数のキューをロードしているとき。

ga.jsがロードされると、それが特殊オブジェクトに変換され、キューが処理され(関数が呼び出され)、それ以降のすべての呼び出しで、渡​​されたものがすぐに実行されます。

まだキューに入っているときには、_gaqは通常のJavaScript配列に過ぎません。したがって、処理待ちのアイテム数には_gaq.lengthでアクセスできます。キューが処理されると、キューは存在しません。

onclick競合状態の問題はよくある問題です。多くの人は、デフォルトのアクションを防止し、イベントトラックを実行してから、元のアクションを完了するために短期間に設定されたsetTimeoutを設定することで回避したいと考えています。

私の好みだけで、分析のためのユーザーエクスペリエンスを妥協しないことです(と私は生活のためにこれを行う。)だから、私の解決策は、代替としてonmousedownonkeydownを使用することです(一緒に私はpreclickとしてそれらを参照してください。それは排除。おおよそのモデルについてですウェブ解析のために十分であるだけで、最小限の偽陽性との競合状態、、、、ではない科学的な精度ここ

は、jQueryの例だ:私は同期コードにを使用してみました

$.fn.preclick = function(param) { 
    if (!param) { 
     return this.trigger("mousedown"); 
    } 
    return this.one("keydown.preclick mousedown.preclick", function(e) { 
     if (e.type === "mousedown" || e.which === 13) { 
      param.apply(this); 
     } 
    }); 
}; 
+0

私はページトラッキングのための非同期コードを使用していますが、ボタンクリックで発生したすべてのイベントは、同期バージョンを使用してコード化されています。 私はこれをChromeでテストしましたが、(getgetrackerを使用することについての絶え間ない廃止の警告にもかかわらず)正常に機能しました。それをデプロイしてから数日間実行すると、行動の変化はまったくありません。イベントの20〜25%は捕捉されていません。 同期コードがこの問題を解決しなかった理由は何ですか?ブラウザ固有の問題があるかどうかをまだ分析していません。 – bkgraham

+0

また、yahelcは、ideads、特にiPadの 'onmousedown'と' onkeydown'イベントをテストしましたか? – bkgraham

+0

@bkgraham yep。 Appleのドキュメントをチェックしてください。それはうまく動作しますhttp://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html – Yahel

関連する問題