我们假设我有一个托管在app.com
上的网站。我的网站是在platform.com
托管的另一个网站上发布的。
<html class="platform.com">
<body>
<iframe src="app.com">
//ga init code
ga("create", "UA-0000000", {
storage: "none",
userId: options.userId,
clientId: options.userId
});
</iframe>
</body>
</html>
问题是我可以看到请求发送到google-analytics.com/collect
,但实际上没有数据提交给Google Analytics报告。
我在GA管理员中检查了过滤器,但没有。我认为这个问题与当前域和请求源域不匹配有关,但我无法弄清楚我实际可以做些什么来解决这个问题。
如您所知,我无法访问platform.com
代码,我可以操作的只是iframe中的代码。
我使用了这些来源:
答案 0 :(得分:0)
如果您无法控制父级,则无法跟踪父级中的交互(您需要实现postmessage接口,这需要您将功能插入platform.com)。
然而,跟踪iframe内部的互动应该没有问题( nb 我相信GA代码实际上在框架页面的源代码中,而不是字面上粘贴在iframe标签之间)
同时使用cookieDomain.auto和storage:none设置是没有意义的,因为它们是互斥的(cookieDomain:auto告诉ga对象使用当前的“主”域作为cookie域,storage:none告诉不要使用像cookies一样的存储空间;无论如何,你发送自己的客户端ID并且不需要cookie。)
我建议使用ga调试器扩展程序(至少可用于chrome),还可以检查您的帐户是否有过滤器。如果出现错误,通常GA拒绝发送任何内容,因此接收端的问题可能非常好。
答案 1 :(得分:0)
看起来您应该在父级上生成 clientId
,通过 postMessage
将其发送到 iframe,并且您必须在 iframe 中添加:'storage': 'none'
,
所以它看起来像这样:
var clientId = 'RECEIVED_FROM_PARENT' ga('create', 'UA-XXXXXX-YY', 'auto', {
'storage': 'none',
'clientId': clientId
});