1

これが機能する理由についての簡単な質問:

<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXX-Y']);
  _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>

そして、これ はしません

<script type="text/javascript">
$(function(){
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXX-Y']);
  _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>

ドキュメントの準備ができた状態で分析を実行するのを妨げるものは何ですか?

4

2 に答える 2

3

_gaq変数宣言をグローバルスコープに置く必要があります

<script type="text/javascript">
var _gaq = _gaq || [];
$(function(){
  _gaq.push(['_setAccount', 'UA-XXXXX-Y']);
  _gaq.push(['_trackPageview']);
  ...

またはwindow._gaqGoogleアナリティクスで使用するプロパティを作成します

<script type="text/javascript">
$(function(){
  window.gaq = window._gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXX-Y']);
  _gaq.push(['_trackPageview']);
  ...
于 2013-03-05T14:51:14.667 に答える
2

Google自体がDOMにロードしているJavaScriptコードに関係している可能性があります。これは、ドキュメントのロード(またはその他のreadystate / loadイベント)で実行されるように設定されている可能性があります。DOMの準備ができているときにスクリプトが実行されているため(jQuery.load)GAは、readyイベントがすでに発生しているため実行されません。

それが問題でない場合は、スコーピングの問題である可能性があります。

于 2013-03-05T14:50:55.240 に答える