2011-04-07 18 views
3

我所試圖做的是發送一個事件,谷歌Analytics(分析)後立即向用戶下一個頁面重定向:谷歌分析:_gaq.push()是一個阻塞函數嗎?

_gaq.push(['_trackEvent', 'xxx' ...]); 
window.location = 'some url ...'; 

上面的代碼管理,以註冊事件,因爲我可以在GA報告中看到它們。不過我懷疑一些事件被丟失,因爲瀏覽器之前軌道像素負荷將用戶重定向到新的一頁。

我的問題是:

  1. 是否_gaq.push()塊,直到事件已經成功地達到了谷歌的服務器?
  2. 如果不是,最好的方法是什麼來實現我所需要的?

謝謝!

+0

相關:http://stackoverflow.com/questions/3427580/race-condition-and-using-google-analytics-asynchronous-gaq-synchronously – 2013-09-20 15:14:25

回答

1

這是基於一些簡單的研究我的觀察。該功能是Google Analytic's異步API的一部分,因此它不應該阻止任何內容,否則,它不是異步的。 :)

通過混淆的ga.js挖,你可以看到有點的跟蹤可能會稱爲onbeforeunload,當你離開一個網頁,其中觸發。

這真的如果跟蹤像素加載完全,這是一個火&忘了不要緊。只要請求啓動併到達Google的服務器,它就會被跟蹤。響應(在這種情況下,像素圖像)是副產品。

+0

嗯,不是嗎? 1)「推」是原生的JavaScript,這裏唯一的谷歌特定的東西是數據添加到的數組的名稱。圖片請求不是副產品,而是發送給Google的數據。這就是爲什麼Google建議在重定向之前添加超時或使用Universal Analytics添加超時回調的原因。 – 2014-05-12 12:30:30

0

也許你可以試試這個方法,但我沒有試過

_gaq.push(['_trackEvent', 'xxx' ...]); 
_gaq.push(function(){location.reload()}); 
1

谷歌有一個support page,說你可能需要調用_gac.push後添加延遲,但他們聲稱這是爲了給谷歌分析JavaScript有機會加載。他們沒有說要確保發送請求。

首先,將出站點擊延遲幾分之一秒。

這種延遲幾乎不會被用戶察覺,但它會提供瀏覽器更多的時間加載跟蹤代碼。如果沒有這種方法,用戶可能會在加載跟蹤代碼之前點擊出站鏈接,在這種情況下,事件將不會被記錄。

我還沒有檢查@ pixelfreak的處理onbeforeunload的說法,但看起來就是這樣。

0

只需使用1秒的延遲。就像這樣:

_gaq.push(['_trackEvent', 'xxx' ...]); 
setTimeout(function(){window.location = 'some_url'}, 1000);