2013-01-03 211 views
3

只是想知道如何谷歌分析代码片段的JavaScript编程方面的作品。谷歌分析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); 
     })(); 

回答

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为窗口全局变量(剧本已经过压缩以节省字节):

var W = window, 

为方便起见,我已粘贴的ga.js的格式化版本在这里: http://pastebin.com/sBmeSg9M

看线603线1956年。

+0

谢谢!第一部分的好解释。 – CodeCrack

+0

您是否还可以解释数组在如何使用_setAccount和_trackPageview方面的使用流程。 – CodeCrack

0

2)如果网站是HTTPS会发生什么://但是我们还是链接的JavaScript作为http://www.google-analytics.com/ga.js

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

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

+0

因此,如果我想在我的服务器上为其他人提供与ga.js类似的代码。我需要以某种方式设置SSL证书或什么? – CodeCrack

+0

如果其他服务器可通过HTTPS访问:是。如果没有SSL加密连接,脚本将无法加载,并向用户显示“不安全内容”警告。 – Testuser

0

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

1
  1. 的谷歌分析代码被加载,并在网页上运行,请在您的域,因此它可以访问window并在其上定义的所有变量。 _gaq是Google代码运行时检查的魔术变量名称,用于查看已定义的内容并使用它发现的值开始跟踪事物。然后,它会跟踪页面加载期间该变量的变化(这是它如何进行单击事件跟踪等)。

  2. 正如其他人所说,无法使用HTTPS URL为谷歌Analytics(分析)通过HTTPS提供了一个页面上会导致一个关于“不安全内容”的警告。坚持谷歌提供的代码,他们这样做是有原因的。

+0

假设我想在我的网站上放置类似的JavaScript片段,是否必须设置SSL证书,以便其他网站可以链接到我的JavaScript代码? – CodeCrack

+0

是的,如果其他人打算将您的代码段代码包含在HTTPS页面中,则需要为您的域名拥有SSL证书,并且启用HTTPS以启用用于托管代码段代码的任何服务器。否则,他们会得到相同的警告,您的代码将无法执行。 –