2011-03-06 155 views
6

Google Analytics採用「網頁內分析」視圖,可直接在您自己的網站上顯示點擊率和其他信息。我正在尋找類似的東西來記錄所有點擊。Google Analytics網頁分析如何運作?

問題是我不確定Google是如何實現他們的頁內分析視圖的 - 他們似乎使用了一個或兩個iframe,並將他們自己的HTML和JavaScript注入其他頁面。

如何去做這樣的事情 - iframes是最好的方式嗎?如果domainX試圖操縱domainY的渲染,你將如何避免Javascript的同源安全策略?

+0

如果你打算做這樣的事情,然後使用自定義事件進行跟蹤。我之前發佈了更多信息:http://stackoverflow.com/questions/5132388/how-to-track-where-on-page-was-link-clicked/5132409#5132409 – CarneyCode 2011-03-06 15:23:12

+0

這個問題的標題的答案是「通常情況下,它不會。「 – Yahel 2011-03-07 21:13:02

+0

它在我嘗試過的衆多網站上正常運行... – CJD 2011-03-12 16:31:57

回答

-1

認爲這可以做得很簡單。您注入了JavaScript,確保每當用戶點擊鏈接時,它都會向iframe中的特定頁面請求/發佈內容。像這樣的東西(jquery):

$('a').live('click', function() { 
    $('#' + iframeid).attr('http://somedomain.com/my_magic_page.php?linkClicked=' + $(this).attr('id') + '&page=' + window.location.toString()); 
} 

不知道它是否會工作。

+0

我不這麼認爲,這將起作用。 jQuery attr函數需要一個或兩個參數。如果你使用一個參數進行調用,這個參數需要是一個想要設置的屬性映射,或者你想獲得一個屬性名稱。也許我錯了,但似乎這個例子是不正確的! – Briganti 2012-01-30 08:57:46

9

這是一個非常有趣的問題。你是對的,同樣的原產地政策禁止注入JS。但谷歌分析有一個優勢:它已經在您的網站(跟蹤代碼)。

因此,這裏是如何工作的(據我可以看到):

  • 當您打開網頁內分析,您首先採取https://www.google.com/analytics/reporting/iyp_launch
  • 該網頁重定向到您的網站,並增加了谷歌會話的網址(如http://example.com/#gaso=THESESSION
  • 跟蹤器現在檢查引用是否是iyp_launch並設置了汽油。如果是,它不僅加載跟蹤器,而且注入JS需要進一步的數據和呈現這樣,JS就在框架(或窗口)內執行並繞過同一個p olicy。
  • 由於Google Anaytics已經跟蹤您的訪問(即,將您標識爲與查看上一頁相同的用戶),因此可以將額外的JS與跟蹤器一起注入,直到您的訪問結束(即您關閉該頁面) 。這樣,疊加層可以在您點擊鏈接後再次渲染。

所以我猜的底線是這樣的:事情是這樣的頁可以,如果網站的所有者已經加入你控制他的網站的腳本已經信任你做分析(這是一個很好的例子,爲什麼要在做這樣的事情之前要非常小心)。如果您沒有這種網站訪問權限,則可能不可能繞過同源策略 - 至少,我想不出另一種方式來執行此操作(除非通過您的服務器代理所有請求,但這會導致其他主要問題)。

相關問題