Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google analytics 通过使用Universal Analytics跨域运行GA实验,链接器可以工作,但实验代码忽略了clientId_Google Analytics_Universal Analytics_Google Experiments_Analytics.js - Fatal编程技术网

Google analytics 通过使用Universal Analytics跨域运行GA实验,链接器可以工作,但实验代码忽略了clientId

Google analytics 通过使用Universal Analytics跨域运行GA实验,链接器可以工作,但实验代码忽略了clientId,google-analytics,universal-analytics,google-experiments,analytics.js,Google Analytics,Universal Analytics,Google Experiments,Analytics.js,几周来,我一直在努力让这一切顺利进行。非常感谢您的帮助 我最近升级到了Universal Analytics,并成功地使用自动链接器设置了跨域跟踪,但在将用户重定向到实验的域部分时,我无法让我的分析实验通过\u ga变量 设置 两个域都有两个跟踪器,一个(t0)共享[UA-xxxxxxx-5],另一个(domainUniqueTracker)登录到该特定域唯一的trackingId([UA-xxxxxxx-1]主域和[UA-xxxxxxx-14]新实验域) 链接器加载在t0上,以支持跨域共享

几周来,我一直在努力让这一切顺利进行。非常感谢您的帮助

我最近升级到了Universal Analytics,并成功地使用
自动链接器设置了跨域跟踪
,但在将用户重定向到实验的域部分时,我无法让我的分析实验通过
\u ga
变量

设置

  • 两个域都有两个跟踪器,一个(
    t0
    )共享
    [UA-xxxxxxx-5]
    ,另一个(
    domainUniqueTracker
    )登录到该特定域唯一的trackingId(
    [UA-xxxxxxx-1]
    主域和
    [UA-xxxxxxx-14]
    新实验域)
  • 链接器加载在
    t0
    上,以支持跨域共享
  • 链接器加载了一系列域,包括我试图通过实验向其发送流量的域
  • 实验是在共享trackingId
    [UA-xxxxxxx-5]
    上创建的
上下文

我的公司有一款产品叫莱姆专业版,到目前为止,我们在公司网页上都有关于它的信息。现在,作为一个实验,我们在一个单独的域上创建了一个关于系统的页面,他们想看看哪个页面(旧的还是新的)吸引了最多的潜在客户

公司网页中的旧产品页(此处安装了实验代码)

单独域上的新产品页面(与tracker上的主域共享trackingId
t0

问题

如果我访问www.lundalogik.se并从那里单击指向新的外部站点的正常链接(虚拟页面上的正常锚链接
lundalogik.se/experience/
),则
clientId
会成功地在URL中传递,外部站点的跟踪器会识别到这一点,并开始使用
clientId

但是如果我浏览到安装实验代码的页面,我会被重定向到外部站点,而不会传递clientId,因此外部站点上的跟踪器会生成一个新的clientId


感谢并为这篇长篇文章感到抱歉,我想尽可能详细地解释。

UA中的各种链接器功能将添加到传出链接(表单、框架等)。由于重定向发生在javascript实验中,因此无法将客户端id添加到url中(这在某种程度上似乎是谷歌的疏忽——他们似乎没有预料到您的用例,即跨域的内容实验)

我有一些未经测试的想法可以贡献,也许你可以在其中一个之上构建一个解决方案

1) 在触发实验代码之前,将客户端id推送到window.document.location.hash。至少在Chrome中,这不会导致重新加载(从查看网络选项卡可以看出)。因为散列现在是url的一部分,所以当重定向触发时,它应该一起发送。然后在接收页面上需要一个脚本来检查clientID的散列并将其传递给analytics(如果存在)

2) 基本上相同,只是这次使用pushState方法(),它应该允许您在不重新加载的情况下提供查询参数

3) 使变体页面成为主域中的页面。这里没有任何内容,而是放了一个javascscript,它从cookie中读取clientId并重定向到另一个域

4) 与3相同,仅在服务器端(不要忘记在重定向中包含content-experience参数)


正如我所说的,这基本上是在大声思考,但它可能会提供解决方案的线索。

我很抱歉只得到了半个答案,但我得到了上级的命令,在我让它完全工作之前就放弃了。希望它仍然会对希望做同样事情的人有所帮助

如果您完成了接收部分,请在此处发布您的代码,我将更新此答案/用答案奖励您

好了,没什么


发送端工作并将clientId添加到哈希中,当实验执行跨域重定向时,它被成功地传输

带有实验代码的页面

在运行实验代码之前执行此操作

var z, y, x = document.cookie.split("; ");
for (var i = 0; i < x.length; i++) {
    y=x[i].split("=");
    if (y[0] == "_ga") window.location.hash = y[1];
}
var z,y,x=document.cookie.split(“;”);
对于(变量i=0;i
跨域页面

这是我接到命令之前从未到过的地方。但你会做一些类似的事情:

  • 检查
    window.location.hash
    以及它是否包含clientId(
    window.location.hash.substr(0,3)=“#GA”
  • 检查现有cookie 2.1. (存在)按“;”拆分cookie,找到“_ga”并用上面的散列替换它的值(首先删除“#”) 2.2. (不存在)在域级别创建新cookie并设置“_ga=(哈希值)”
  • 启动google analytics tracker,假设访问者之前已经访问过该页面,并从cookie中接受客户端id
  • 长命百岁
  • 所以,再次抱歉,答案只完成了一部分,但希望有人能从中受益

    或者至少不要以为他们会像我无法工作时那样生气:)


    如果社区愿意,如果这被认为是不好的做法,我当然会删除“已接受的答案”(这只是我在SO网络上的第二篇帖子)。

    +1完整性:-)谢谢Eike!将定义。看看你的建议当我周五回去工作的时候,我的想法其实是一样的,但是我担心我把事情弄得比它应该做的更难(即,我做了一些天生的、疯狂的错误并且忽略了一些非常明显的事情:)。谢谢你证实我对可能的疏忽的怀疑!只要在