将Google analytics client_id发送到Piwik
Send Google analytics client_id to Piwik
有没有办法通过使用javascript解决方案将Google analytics client_id发送到Piwik?事实上,我可以用官方文档中描述的以下代码片段获取谷歌的客户端id:
ga(function(tracker) {
var clientId = tracker.get('clientId');
});
我相信问题是Google的ga.js和Piwik的跟踪代码异步运行,我无法将client_id发送给Piwik。我在Piwik中创建了一个自定义diemnsion,并将相关代码添加到我的跟踪脚本中,但Piwik说"没有定义值"。我尝试发送静态id(例如test123),它运行良好。
我试图在页面加载window.onload
函数后加载Piwik的跟踪代码,但没有成功。我也尝试过等待clientId
变量生成,但它都不起作用。我试图为这两个跟踪脚本打开异步选项,但没有成功。
我运行chrome的时间线调试来查看每个跟踪代码何时加载,但即使Piwik的js代码稍后加载,client_id也没有传递到我的服务器。
你知道我如何将这些信息发送到我自己的服务器以在Piwik中进行处理吗?如果有人能提到另一种调试的可能性,这可以帮助我识别问题,那也太好了。
正如EikePierstorff所提到的,一个更好的解决方案是从存储的cookie中读取谷歌的client_id
。您可以通过发布以下内容来获取谷歌分析cookie的内容:
document.cookie.valueOf('_ga')
它列出了cookie的内容。cookie中的每个元素都用分号(;
)分隔。我使用以下代码读取client_id
:
function getClientId(){
var cookie_val_array = document.cookie.valueOf('_ga').split(';');
for (i=0; i < cookie_val_array.length; i++){
if(cookie_val_array[i].indexOf('_ga=') >= 0){
client_id = cookie_val_array[i].split('.')[2] + '.' + cookie_val_array[i].split('.')[3];
}
}
return client_id;
}
我使用以下代码将其传递给Piwik:
_paq.push(['setCustomDimension', customDimensionId = 1, customDimensionValue = getClientId()]);
注意:您应该在Piwik中创建一个自定义维度,您的自定义维度可能有不同的id。
我想强调的几件事:
如果这是你第一次在您的页面和cookie尚未生成,此代码将给出错误所以如果你愿意的话,你需要处理它。
谷歌可能会更改其cookie的格式和内容,因此请在开始阅读以下内容之前,请检查cookie的内容其价值。
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- difference between '$(<%= DDL.ID %>) & $('
- 使用Javascript获取所选选项ID
- 根据id将json数组组合为一个json数组
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 对id以某个字符串开头的元素进行计数
- 如果元素's的ID以数字开头
- 通过id和class属性获取元素
- 根据选项卡内部的文本链接中的哈希ID动态选择jqueryUI选项卡
- 使用当前日期生成随机id
- Javascript-ID冲突的几率
- Href:当前DIV中的目标ID
- 无法获取属性'Id'使用Knockout.js的未定义或空引用API
- Javascript复选框函数:;缺少:在属性id之后"
- Twitter引导程序Typeahead-Id&标签
- 如何与特定ID交谈
- chart.series[id].remove()无法刷新高位图表/高位股票中其他系列的图例属性
- 如何在速度模板中获取LiferayPortlet实例id
- 谷歌地图可以't添加正确的标记ID
- Piwik:如何跨域(PHP/JS)跟踪访问者(用户ID)