16

他の JS フレームワーク (dojo、jquery など) を使用せずに、 Google アナリティクスの JavaScript を動的にロードして、Web ページで Web トラッキングに使用するにはどうすればよいですか?

JS を動的にロードするための一般的な適切な方法は、次のことです。

var gaJs = document.createElement("script");
gaJs.type = "text/javascript";
gaJs.src = "http://www.google-analytics.com/ga.js";
document.body.appendChild(gaJs);
var pageTracker = _gat._getTracker("UA-XXXXXXXXX");
pageTracker._initData();
pageTracker._trackPageview();

しかし、それはうまくいきません。

_gat._getTracker_initData/TrackPageviewが機能するのに間に合うように ga.js ファイルが読み込まれません。

ga.js を適切に動的に読み込む方法に関するアイデア。

更新: 誰かが次のリンクでこの問題に対処しようとしたようです。ただし、これは Google アナリティクスではなく、古い Urchin コードで使用するためのものです。

これを urchin.js の代わりに ga.js で動作させる方法について何かアイデアはありますか?

http://20y.hu/20070805/loading-google-analytics-dynamically-on-document-load.html

4

5 に答える 5

7

HTML5 Boilerplateのこのスニペットを使用できます。

<!-- Google Analytics: change UA-XXXXX-X to be your site's ID. -->
<script>
  var _gaq=[['_setAccount','UA-XXXXX-X'],['_trackPageview']];
  (function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
  g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
  s.parentNode.insertBefore(g,s)}(document,'script'));
</script>
于 2013-02-26T19:03:35.183 に答える
1

Googleが提供する正確なJavaScriptコードを使用してみてから、UIフレームワークの構成に基づいてコードのそのセクションを条件付きで表示してください。これが実行されているプラ​​ットフォームについては言及していません。ASP.NETの場合は、コードをPlaceHolderまたはUserControlに配置し、スクリプトを含める必要がある場合は、構成ファイルの設定に基づいてVisibleをtrueまたはfalseに設定できます。複数のサイトでこのアプローチを使用して、Analyticsスクリプトが実稼働前の環境に含まれないようにしました。

于 2009-08-11T13:23:46.867 に答える
0
関数loadGA()
{{
    if(typeof _gat =='function')//すでにロードされています
    {{
        // innitGA();
        //上記の行のコメントを外したい場合があります。
        //_gatオブジェクトが存在する場合
        //したくないでしょう。
        戻る;
    }
    var hostname ='google-analytics.com';
    var protocol =(( "https:" == document.location.protocol)? "https:// ssl。": "http:// www。");
    js = document.createElement('script');
    js.setAttribute('type'、'text / javascript');
    js.setAttribute('src'、protocol + hostname +'/ga.js');
    document.body.appendChild(js);
    //ga.jsの負荷を検出する2つのメソッド
    //一部のブラウザは両方を使用しますが
    ロード済み=false; //ブール値を使用します
    js.onreadystatechange = function(){
        if(js.readyState =='ロード済み')
        {{
            if(!loaded)
            {{
                innitGA();
            }
            ロード済み=true;
        }
    };
    js.onload = function()
    {{
        if(!loaded)
        {{           
            innitGA();
        }
        ロード済み=true;
    };
}

関数innitGA()
{{
    // var pageTracker = _gat._getTracker('GA_ACCOUNT / PROFILE_ID');
    //pageTracker._initData();
    //pageTracker._trackPageview();
    alert('oh hai I can watch plz?');
}

loadGA()を呼び出すだけです... IE6 / 7/8、FF3、Chrome、Operaでテスト済み

このパーティーに少し遅れたらごめんなさい。

于 2009-11-05T14:26:28.047 に答える
0

サーバー側のプログラミングの方が簡単だと思いますが、これは少し前に見つけまし た。に具体的に設定されていることに注意してください。html head

「Adding Javascript Through Ajax」の最初のリンクも確認してください。

于 2009-04-15T21:56:05.777 に答える
-2

私は文字通り、これを行う何かをまとめただけです... jqueryを使用しています。その秘訣は、トラッキング コードを含むスクリプト タグにロード イベントを追加することです。

var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
var gaScript = document.createElement('script');
var loaded = false;
gaScript.src = gaJsHost + "google-analytics.com/ga.js";

$(gaScript).load(function(){
  loaded = true;
  var pageTracker = _gat._getTracker(Consts.google_analytics_uacct);
  pageTracker._initData();
  pageTracker._trackPageview();
});

document.body.appendChild(gaScript);

// And to make it work in ie7 & 8
gaInterval = setInterval(function() {
  if (!loaded && typeof _gat != 'undefined') {
    $(gaScript).load();
    clearInterval(gaInterval);
  }
},50);

私が解決しようとしているのは...これはGoogleによって許可されていますか。

于 2009-08-11T10:49:58.977 に答える