3

JavaScriptプログラミングの観点から、Googleアナリティクスのコードスニペットがどのように機能するのか疑問に思っています.

<script type="text/javascript">

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

  (function() {
    var ga = document.createElement('script');
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
        'http://www') + '.google-analytics.com/ga.js';
    ga.setAttribute('async', 'true');
    document.documentElement.firstChild.appendChild(ga);
  })();

</script>

1) 2 つの要素を _gaq 配列にプッシュしますが、特に ga.js がリモート サーバー上にあるため、実際に実行/使用されるのはいつですか? ga.js コードを調べてみましたが、本当にわかりにくいです。

2) サイトが https:// で、JavaScript をhttp://www.google-analytics.com/ga.jsとしてリンクした場合はどうなるでしょうか

(function() {
        var ga = document.createElement('script');
        ga.src = 'http://www.google-analytics.com/ga.js';
        ga.setAttribute('async', 'true');
        document.documentElement.firstChild.appendChild(ga);
      })();
4

4 に答える 4

3

_gaqグローバル変数です(ブラウザではグローバル変数はオブジェクトに保存されますWindow

そして、次のhttps://ssl.google-analytics.com/ga.jsように参照されます:

   var He = function () {
      var a = W._gaq,
      b = l;
      if (a && Aa(a[p]) && (b = "[object Array]" == Object[y][w].call(Object(a)), !b)) {
         Z = a;
         return
      }
      W._gaq = Z;
      b && Z[p][xa](Z, a)
   };

また、W は Window グローバル変数を参照します (スクリプトはバイトを節約するために縮小されています)。

   var W = window,

便宜上、ga.js のフォーマット済みバージョンをここに貼り付けました: http://pastebin.com/sBmeSg9M

603 行目と 1956 行目を見てください。

于 2013-01-03T00:12:12.367 に答える
1
  1. Google アナリティクスのコードは、ドメインのページに読み込まれて実行されるためwindow、定義されているすべての変数にアクセスできます。_gaqは、Google のコードが実行時に検査して何が定義されているかを調べ、検出した値を使用して追跡を開始する魔法の変数名です。次に、ページが読み込まれている間、この変数への変更を追跡します (これは、クリック イベントの追跡などを行う方法です)。

  2. 他の人が言及しているように、HTTPS 経由で提供されるページで Google アナリティクスに HTTPS URL を使用しないと、「安全でないコンテンツ」に関する警告が表示されます。Google が提供するコードを使用してください。それには理由があります。

于 2013-01-03T02:38:06.433 に答える
0

2) サイトが https:// で、JavaScript をhttp://www.google-analytics.com/ga.jsとしてリンクした場合はどうなるでしょうか

これにより、ほぼすべての最新のブラウザー ( Chromeなど) が JS ファイルをロードできなくなり、「安全でないコンテンツ」があるという小さな警告がユーザーに表示されます。

この背後にある理由は、JS ファイルをロードすると、SSL 証明書の警告なしにMITM 攻撃が可能になるためです。

于 2013-01-03T00:13:57.747 に答える
0

2.: SSL 証明書が正しく機能しません。SSL サイトに非 SSL (https) スクリプトが含まれています。そうですか?

于 2013-01-03T00:15:25.913 に答える