2013-04-27 56 views
0

我已經設置了我們的GA代碼來處理跨域跨瀏覽器跟蹤。谷歌分析 - 跨瀏覽器跟蹤與jquery不添加cookie

我們的GA代碼:

<script type="text/javascript"> 
var _gaq = _gaq || []; 
_gaq.push(['_setAccount', 'UA-XXXXXXX-1']); 
_gaq.push(['_setDomainName', 'firstdomain.com']); 
_gaq.push(['_setAllowLinker', true]); 
_gaq.push(['_trackPageview']); 
_gaq.push(['_trackEvent', 'Error-404', 'page: ' + document.location.pathname + document.location.search,' ref: ' + document.referrer ]); 

(function() { 
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; 
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; 
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); 
})(); 
</script> 

jQuery的代碼添加_link的onClick元素到頁面上:

$(document).ready(function() { 
// Add onClick _link to all <a> elements on page where href contains sister sites 
    $("a[href*='seconddomain.com'],a[href*='thirddomain.com'],a[href*='fourthdomain.com']").click(function() { 
    _gaq.push(['_link', this.href]); 
    return false; 
}); 

的問題是,雖然我知道你不看鏈接變化在頁面上,當你點擊它時,cookie應該在新鏈接的瀏覽器地址欄中可見,但這不是發生的事情。

有誰看到我做錯了什麼?

謝謝!

回答

1

你在你的jQuery代碼中缺少右括號和parens。您關閉了.click函數,但不關閉.ready函數。應該是:

$(document).ready(function() { 
// Add onClick _link to all <a> elements on page where href contains sister sites 
$("a[href*='seconddomain.com'],a[href*='thirddomain.com'],a[href*='fourthdomain.com']").click(function() { 
    _gaq.push(['_link', this.href]); 
    return false; 
    }); 
}); // <-- missing this 

編輯:

既然你說此修復程序沒有工作(注意,你需要做的是反正)...

嗯,我知道代碼本身作品,我測試過它。因此,您的網頁上可能還有其他內容,某些條件或其他代碼阻止其執行。

有些事情要檢查:

  • 是鏈接或硬編碼在當時存在的點擊監聽器應用?

如果你的鏈接是動態生成的執行.click代碼之後的某個時候(哪怕它只是在href attribs),那麼該事件將不會附加到鏈接。爲了解決這個問題,你需要做一些委託事件監聽,而不是直接事件監聽。基本上這個想法是,您將事件偵聽器附加到一些將從一開始就存在的父對象,然後在事件冒泡過程中篩選鏈接。這裏是如何做到這一點的例子:

$(document).ready(function() { 
    $('body').on("click", "a[href*='seconddomain.com'],a[href*='thirddomain.com'],a[href*='fourthdomain.com']", function(event){ 
    _gaq.push(['_link', this.href]); 
    return false; 
    }); 
}); 
  • 也許GA代碼沒有足夠的時間重定向前執行..

嘗試添加.preventDeafault打壓正常的重定向,然後做一個.setTimeout像500ms,然後將location.href更改爲目標URL。或者,嘗試在鏈接中添加target='_blank'以使它們在新窗口/選項卡中打開(因爲它將在新窗口中打開,「足夠時間執行」的問題將變得不切實際)。如果其中任何一項有效,那麼您將知道GA在重定向之前沒有被給予足夠的時間來執行,並且您需要執行其中一項操作以確保它有機會執行。

  • 也許你有其他代碼覆蓋/覆蓋鏈接的點擊事件?

VisualEvent爲檢查出添加到鏈接(或其他元素)的事件很大書籤。

+0

謝謝蠟筆小新。我關閉了該功能,但點擊時仍然沒有在URL地址欄中看到cookie。 – Yazmin 2013-04-30 20:17:06

+0

@Yazmin根據你的評論編輯我的答案 – 2013-05-01 15:43:57

+0

謝謝蠟筆小新。重定向是問題,雖然我無法使用.preventDefault和.setTimeout顯示傳遞的cookie。還有其他建議嗎? – Yazmin 2013-05-01 20:23:35