2017-03-03 107 views
0

我打算使用Google Analytics Measurement Protocol。我目前正計劃通過將其作爲URL參數包含在某些Ajax請求中來捕獲客戶端ID(cid)。使用Google Analytics跟蹤器客戶端ID(cid)

我發現我可以公開這樣的客戶端ID值:

var ga_cid; 
ga(function(tracker) { 
    ga_cid = tracker.get('clientId'); 
}); 

我很擔心,這條路線是拙劣的形式,因爲它是污染全局命名空間。但是,我一直無法找到更優雅的(最佳實踐)解決方案。

什麼是「正確」的方式?我是否在說這個?

回答

0

我最終制作了一個cookie,並從PHP引用它,而不是在進行AJAX調用時必須通過的全局JavaScript變量。

// put the Google Analytics Client ID into a cookie, so that it will be available to PHP 
ga(function(tracker) { 
    var date = new Date(); 
    date.setTime(date.getTime() + (30 * 24 * 60 * 60 * 1000)); 
    document.cookie = 'ga_cid=' + tracker.get('clientId') + '; expires=' + date.toUTCString() + '; path=/'; 
}); 

然後在PHP中:

$ga_cid = filter_input(INPUT_COOKIE, 'ga_cid'); 
0

是的,你可能是對的。而不是像official documentation推薦的那樣從Cookie中獲取客戶端ID。你可以這樣做如下:

ga(function(tracker) { 
    var clientId = tracker.get('clientId'); 
}); 

有關於如何根據您的網頁是如何設置進行檢索此頁面上提到的更多的選擇。

+0

您所提供的代碼是從他們的文檔中的一個。它不會使客戶端ID可供使用,因此我的帖子。 – Sonny

+0

不,實際上兩個代碼之間存在巨大差異。如果你在函數外面聲明var,你將它增加到全局範圍。只要在函數中聲明變量,就可以將範圍保持爲本地。 http://stackoverflow.com/questions/500431/what-is-the-scope-of-variables-in-javascript – pal4life

+0

你誤會了我。我知道你給出的例子中的值範圍是本地的。這是官方文件中的例子。正如我所討論的那樣,讓它在本地存在並不能讓我能夠訪問JavaScript中其他位置的值,就像在進行Ajax調用時一樣。這就是爲什麼我提出了我的修改版本,以及是否是實現它的方式,還是有更好的路線。 – Sonny

相關問題