谷歌分析javascript片段分析

时间:2013-01-03 00:05:40

标签: javascript cross-domain code-snippets

只是想知道google analytics代码段如何在javascript编程方面发挥作用。

<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 个答案:

答案 0 :(得分:3)

_gaqglobal variable(在浏览器中全局变量存储在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行。

答案 1 :(得分:1)

  1. Google Analytics代码会在您的网页上加载并运行,因此可以访问window及其上定义的所有变量。 _gaq是Google的代码在运行时检查的神奇变量名称,以查看已定义的内容并使用它找到的值开始跟踪内容。然后它会跟踪页面加载期间对此变量的更改(点击事件跟踪等)。

  2. 正如其他人所提到的,在通过HTTPS提供服务的网页上未能使用Google Analytics的HTTPS网址会导致出现“不安全内容”的警告。坚持谷歌提供的代码,他们这样做是有原因的。

答案 2 :(得分:0)

  

2)如果该网站为https://会发生什么,但我们仍将javascript链接为http://www.google-analytics.com/ga.js

这会阻止几乎所有现代浏览器(例如Chrome)加载JS文件,并向用户显示一些警告“存在”不安全内容“。

这背后的原因是,加载JS文件将允许MITM attacks没有SSL证书警告。

答案 3 :(得分:0)

2:然后您的SSL证书无法正常工作。您的SSL站点包含非ssl(https)脚本。这是你的意思吗?