我正在尝试使用自定义变量在会话范围内跟踪用户类型。在每个页面加载时,我想检查 GA 变量是否存在,如果不存在,则根据 cookie(访问者、注册、高级)将其设置为 3 个值之一。
TrackUser: function () {
var index = 5; //slot 5
var scope = 2; //set scope to session level
var key = "UserType";
var value;
if (_gaq != undefined) {
_gaq.push(function () { //this is async
var pageTracker = _gat._getTrackerByName(); //Gets the default tracker.
var vis = pageTracker._getVisitorCustomVar(5); //this should return the 'usertype' if its been set
//if no GA variable exists then lets set it
if (vis == undefined) { // !? THIS IS ALWAYS 'undefined' ?!
value = getUserType(); //get the users type
//send custom var to GA
_gaq.push(['_setCustomVar',
index, // This custom var is set to slot #1. Required parameter.
key, // The name acts as a kind of category for the user activity. Required parameter.
value, // This value of the custom variable. Required parameter.
scope // Sets the scope to session-level. Optional parameter.
]);
}
});
}
}
此函数在轨道事件推送“_trackEvent”之前被调用,因此它可能在调用“_trackEvent”之前未完成。即便如此,它不会在下一页加载时发送吗?
还是我误解了 GA 如何使用带有自定义变量的 cookie?
顺便说一句:如果有更简单的方法来获取自定义变量(也许不必向 Google 发送请求),那将是理想的。
更新
在阅读更多文档后,我意识到“_getVisitorCustomVar”仅在将自定义变量设置在“访问者范围”(3)时才返回。谷歌显然在他们的服务器上跟踪“会话范围”(2) 变量并且不设置客户端 cookie。在我找到更优雅的解决方案之前,我只是设置自己的会话 cookie 来检查我是否已向 GA 发送有关用户类型的信息。