8

私のサイトには_gaq.push、Googleのコードのメソッドへの呼び出しをトリガーするGoogle Analytics Tracking Code(GATC)があります。

GAが利用できない、または_gaq読み込まれていないシナリオでは、ページにJavaScriptエラーがないことを確認したいと思います。_gaq'undefined'と同一ではないことを確認することで、これで利用可能かどうかを確認できますか?これはxブラウザですか?Googleのドキュメントを見たことがありますが、これについては何も言及されていません。

オブジェクトがであるかどうかを確認することは知っていますがnull、これが必要かどうかはわかりません。

if (typeof(_gaq) !== 'undefined') {
   _gaq.push(['_trackEvent', 'Downloaded Video', 'Yes']); 
   _gaq.push(['rollup._trackEvent', 'Downloaded Video', 'Yes']);                                    
}
4

6 に答える 6

50

ユニバーサル アナリティクス ( ) を使用している場合は、次のanalytics.jsように切り替えます。

_gaq.push(['_trackEvent', 'Downloaded Video', 'Yes']); 

これに:

ga('send', 'event', 'Downloaded Video', 'Yes');
于 2013-07-04T15:46:06.673 に答える
18

アナリティクスから取得する推奨の JavaScript コードには、次の行が含まれています。

var _gaq = _gaq || [];

したがって、この行をコードに保持すると、配列は常に使用可能になります。後で分析コードを追加する場合は、メイン スクリプトの前に上記の行を追加するだけで機能します。

このスニペットは、以前に定義した場合でも無害であることに注意してください。これは_gaq、以前に定義されていない場合にのみ新しい配列として定義するためです。

これは、非同期スクリプトを使用する優れた方法です。配列は最初にローカルで定義され、必要なときにいつでもこの配列にコマンドをプッシュできます。分析スクリプトが読み込まれると、必要なときにこれらのコマンドを使用できます。したがって、配列が未定義かどうかを確認する必要はありません。

于 2012-11-16T10:16:12.093 に答える
3

Google Analyticsコードスニペットがこれを行うため、通常、定義されているかどうかを確認する必要はありません。ただし、質問が示唆しているように、stieの他のセクションでイベント追跡のようなことをしている場合は、スクリプトが非同期であるため、スクリプトがロードされているかどうかを確認するとよい場合があります。

GA用のjQueryプラグインラッパーを作成し、データをプッシュする前に、GAが実際にインストールされているかどうかをコードでチェックしたいと思いました。これは、GAがインストールされていないか、GAが初期化される前に、誰かがプラグインを使用しようとした場合をカバーするためのものでした。

if (typeof(_gaq) == 'undefined') {
  console.error("Google Analytics is not installed");
}
于 2013-02-21T20:13:46.250 に答える
3

ga.jsロードされると、window._gat(Q ではなく T に注意してください) グローバル オブジェクトが定義されます。それが定義されているかどうかをテストする必要があります (ただし、非同期でロードされることに注意してください。テストが遅れる可能性があります)。

于 2012-11-19T09:18:30.190 に答える
1

@Davidが言ったように、var _gaq = _gaq || [];スニペットが以前に定義されている限り、問題はなく_gaq、未定義であることを確認する必要はありません。

_gaq以前に未定義だった場合に空の配列として定義される理由は、pushメソッドを持つためです。これにより、GA コードが読み込まれる前に、または場合によっては使用できない場合に、分析コードを実行できます。

GA が読み込ま_gaqれると、メソッドを持つオブジェクトとして再定義されpush、古い _gaq 配列の既存の内容が実行されます。

于 2012-11-16T21:20:10.110 に答える