2017-03-03 77 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

相关问题