web-dev-qa-db-ja.com

キャッチされないReferenceError:_gaqが定義されていません(Google Analytics)

chromeデバッグログでサイトページを表示すると、次のメッセージが表示されます。

キャッチされないReferenceError:_gaqが定義されていません

ページ自体は、onloadイベントハンドラを使用してオブジェクトを追跡し、Googleアナリティクスの_trackEventを起動することになっています。

おそらく、ga.jsファイルは時間内にロードされないため、onload_trackEventトリガーがキャッチされない可能性があります。非同期スニペットは</body>が閉じる前に使用され、オブジェクトは中央の<body>に配置されます。

(他の投稿でもjQueryの位置を参照していますが、これは赤いニシンかもしれません)

どんな援助も大歓迎です。

33
Alex Brown

https://developers.google.com/analytics/devguides/collection/gajs/ このコードは、既存の「従来のスニペット」を「最新の非同期バージョンに置き換えます。既存のトラッキングスニペットを削除する必要があります最初。"

<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.Push(['_setAccount', 'UA-XXXXX-X']);
  _gaq.Push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>

イベントの受信を確認するには(これが機能しているかどうかを知るため)、[レポート]ページの左側にある[リアルタイム]メニューオプションで[イベント]を探します。

34
PJ Brunet

非同期スニペットの位置に関して、 GAヘルプページ は-

このスニペットをウェブサイトのテンプレートページに貼り付けて、閉じる</head>タグ。

私が最初に考えたのは、ページの速度を向上させるためにページの下部にJSをロードする必要があるということでした。ただし、GA非同期トラッキングスニペットは、ga.jsをすぐにロードせず、ページの実行をブロックしないため、ヘッドにロードする必要があります。 DOMのスクリプトタグ。キューの最後に配置します。)

何らかの理由で、非同期スニペットをヘッドに移動できない場合は、_gaq自分、このように

<button onclick="var _gaq = _gaq || []; _gaq.Push(['_trackEvent', 'button3', 'clicked'])"/><button>
16
Spongeboy

同じ問題があった。 _gaq配列を定義する必要があります。ヘッダーのGoogle Analyticsスクリプトの後にこれを追加するだけです。

var _gaq = _gaq || [];
_gaq.Push(['_setAccount', 'UA-XXXXXX-X']);
_gaq.Push(['_trackPageview']);
11
kaleazy

ga.js の代わりに analytics.js の最新バージョンを使用できます

ga.jsはレガシーライブラリです。新しい実装を開始する場合は、このライブラリの最新バージョンのanalytics.jsを使用することをお勧めします。既存の実装については、ga.jsからanalytics.jsに移行する方法をご覧ください。

以下に例を示します。

ga('send', {
  hitType: 'event',
  eventCategory: 'Video',
  eventAction: 'play',
  eventLabel: 'cats.mp4'
});
4
Ouadie

トラッキングコードを次のように変更します。

<script type="text/javascript">
      var gaq; 
      var _gaq = gaq || [];
      _gaq.Push(['_setAccount', 'UA-XXXXX-X']);
      _gaq.Push(['_setDomainName', 'yourdomain.com']);
      _gaq.Push(['_setAllowLinker', true]);
       _gaq.Push(['_trackPageview']);

      (function() {
        var ga = document.createElement('script');
        ga.type = 'text/javascript';
        ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www')
                      + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0];
        s.parentNode.insertBefore(ga, s);
      })();

</script>
0
Gal Samuel