2011-12-12 89 views
7

我跟蹤一個網站,刊載我的一個項目,這個代碼在下載按鈕點擊:跟蹤下載按鈕點擊與分析利用事件

function trackDownload(link) { 
    try { 
     _gaq.push(['_trackEvent', 'Downloads', 'Click', 'Setup executable']); 
     setTimeout('document.location = "' + link.href + '"', 100); 
    } catch (err) {} 
    return false; 
} 

而且按鈕的東西爲:

<a href="files/setup.exe" onclick="return trackDownload(this);">Download</a> 

因此,當用戶點擊它時,會將事件推送到Google Analytics,然後用戶被重定向到該文件。

這也適用於外部鏈接跟蹤,沒有區別。

現在我的問題。 我可以確定在用戶重定向之前,Analytics事件是「已處理」的嗎?如果不是,那麼重定向會導致事件丟失?目前正在跟蹤事件,但我無法確定它們是全部是

我讀書,我也可以嘗試的東西有點不同,推重定向功能到分析隊列:

_gaq.push(function() { document.location = link.href; }); 

但是,如果這個工程現在還不清楚,或者如果它只是相當於以前的一個。實際上,here據說「調用_gaq.push [...]執行命令,因爲它們被按下」「。

回答

7

你是對的,你可以push functions onto the analytics queue。由於功能或跟蹤事件都執行/順序進行評估,你將他們推到數組,你應該能夠做到這一點:

function trackDownload(link) { 
    _gaq.push(['_trackEvent', 'Downloads', 'Click', 'Setup executable']); 
    _gaq.push(function() { document.location = link.href }); 
    return false; 
} 

注意,try/catch語句是沒有必要的,因爲push() ISN」沒有記錄扔任何東西(我建議刪除它,因爲空的catch塊可以mask other problems)。

你問:

但是,如果這個工程現在還不清楚,或者如果它只是相當於以前的一個。

在你的第一個例子(推,setTimeout的),該事件將被丟失,如果當你重定向(因爲在那個時候,_gaq只是一個數組)分析未完成加載。在使用push(function...的版本中,無論Google Analytics在用戶點擊下載按鈕時是否完成加載,都會在重定向之前記錄該事件。出於這個原因,我會推薦使用push(function...

需要警告push(function...版本將等待分析在重定向發生之前完成加載(這聽起來像您想要的),但您可能想要添加一種方法來處理分析不加載的情況。

+0

也許我可以在我發佈的'_gaq'中推送重定向,然後在'catch'塊中重複一遍,並在更遲的'setTimeout'(一兩秒)中重複。所以如果'_gaq'出現問題,我可以肯定用戶遲早會被重定向。 –

+0

我同意延遲的setTimeout是處理不分析案例的方式。但是,我認爲一兩秒鐘可能會快一點。另外,我只注意到catch塊是不需要的 - 我會更新我的答案。 –

+0

事實上,我不記得爲什麼我把這個'try..catch'塊:)關於超時:我可以設置一個更長的一個(5秒)和點擊時按鈕上的微調。所以更快的用戶不會有這種感覺,沒有什麼事情發生...... –