2013-01-03 72 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以啓用用於託管代碼段代碼的任何服務器。否則,他們會得到相同的警告,您的代碼將無法執行。 –