3

只是想知道谷歌分析代码片段在 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

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. 谷歌分析代码被加载并在您的页面上运行,在您的域中,因此它可以访问window并在其上定义的所有变量。_gaq是 Google 的代码在运行时检查的神奇变量名称,以查看已定义的内容并使用它找到的值开始跟踪事物。然后它会在您的页面加载期间跟踪此变量的更改(这就是它如何进行点击事件跟踪等)。

  2. 正如其他人所提到的,未能在通过 HTTPS 提供的页面上使用 Google Analytics 的 HTTPS URL 将导致有关“不安全内容”的警告。坚持使用 Google 提供的代码,他们这样做是有原因的。

于 2013-01-03T02:38:06.433 回答
0

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

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

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

于 2013-01-03T00:13:57.747 回答
0

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

于 2013-01-03T00:15:25.913 回答