Javascript 谷歌分析动态iFramed内容与多个父域解决方案?

Javascript 谷歌分析动态iFramed内容与多个父域解决方案?,javascript,iframe,coldfusion,google-analytics,web-analytics,Javascript,Iframe,Coldfusion,Google Analytics,Web Analytics,首先,我在互联网上搜索了各种建议和解决方案,并根据这些建议和解决方案构建了一个测试用例。问题是,现实世界中的网站/设置比包含静态测试iFramed内容的静态测试页面要复杂得多 我可以将Google Analytics tracking javascript放在标题中,但我需要动态选择要使用的分析跟踪代码 好消息是,父页面归“我们”所有,动态内容将伸出并从“我们”中提取标题,然后在动态内容之前添加标题。头文件甚至可以是ColdFusion(.cfm)文件,问题是ColdFusion在发送给第三方之

首先,我在互联网上搜索了各种建议和解决方案,并根据这些建议和解决方案构建了一个测试用例。问题是,现实世界中的网站/设置比包含静态测试iFramed内容的静态测试页面要复杂得多

我可以将Google Analytics tracking javascript放在标题中,但我需要动态选择要使用的分析跟踪代码

好消息是,父页面归“我们”所有,动态内容将伸出并从“我们”中提取标题,然后在动态内容之前添加标题。头文件甚至可以是ColdFusion(.cfm)文件,问题是ColdFusion在发送给第三方之前会进行评估。当第三方进行重定向并使用多个子域提供动态内容时,情况变得更糟

之前在ColdFusion外部网网站上,ColdFusion被用来检查服务器变量,以确定使用哪种Google分析跟踪代码。在我的测试中,这不是一个选项,因为标头是如何获取的,而且不管从何处获取,标头都位于同一台服务器上,因此我们无法从ColdFusion中获取有用的数据

JavaScript还可以用于检查主机、域、引用器和所有重定向和iFrame都会造成问题。以下是我在“标题”中尝试的内容,以确定我可以使用哪些数据来确定使用哪种分析跟踪代码:

  <!--- Debugging code --->
  console.log('testing testing testing');
  var isInIframe = (parent !== window);

  if (isInIframe) 
  {
    parentUrl = document.referrer;
    console.log('JS parentURL ' + parentUrl);
    console.log('JS document.domain ' + document.domain);
    console.log('JS window.location.hostname ' + window.location.hostname);
    console.log('JS window.parent.domain ' + window.parent.domain);
    console.log('JS window.frameElement ' + window.frameElement);
  }
  else
  {   
    console.log('Not in iFrame according to JS test');
  }

  console.log('CF HTTP_REFERER ' + '<cfoutput>#CGI.HTTP_REFERER#</cfoutput>'); <!--- always blank --->
  console.log('CF HTTP_HOST ' + '<cfoutput>#CGI.HTTP_HOST#</cfoutput>'); 
  console.log('CF SERVER_NAME ' + '<cfoutput>#CGI.SERVER_NAME#</cfoutput>');
  console.log('CF REMOTE_HOST ' + '<cfoutput>#CGI.REMOTE_HOST#</cfoutput>');
  console.log('Done testing');
</script>

console.log(“测试”);
变量IsInFrame=(父级!==窗口);
if(isInIframe)
{
parentUrl=document.referer;
log('JS parentURL'+parentURL);
console.log('JS document.domain'+document.domain');
log('JS window.location.hostname'+window.location.hostname');
log('JS window.parent.domain'+window.parent.domain);
log('JS window.frameElement'+window.frameElement);
}
其他的
{   
log('根据JS测试,不在iFrame中');
}
log('CF HTTP#u REFERER'+'#CGI.HTTP#u REFERER');
log('CF HTTP_HOST'+'#CGI.HTTP#u HOST#');
console.log('CF SERVER_NAME'+'#CGI.SERVER_NAME#');
log('CF REMOTE_HOST'+'#CGI.REMOTE_HOST#');
console.log(“完成测试”);

我们希望使用单独的Google分析跟踪代码跟踪3个主要案例,即UA-XXXXXXXX-1、UA-XXXXXXXX-2、UA-XXXXXXXX-3,它们位于三个不同的域上,但只有一个header.cfm文件。我可以使用document.domain或window.location.hostname来区分外联网和internet之间的区别,因为动态内容来自不同的来源,但我不太确定我能否区分两个不同的internet网站之间的区别。动态内容在B2C和B2B使用之间存在差异,因此多个B2C互联网网站被提供相同的数据。外部网站点总是获取B2B数据。B2C在subdomain1.host.com上,B2B在subdomain2.host.com上


有没有一种使用JavaScript实现这一点的好方法?我们应该在URL中添加参数吗?我甚至想过使用元标记或隐藏表单字段来传递信息。。。我更愿意让页眉中的JavaScript根据referer/host来解决这个问题,但我不确定是否可以,因为所有的重定向和动态iFramed内容。document.referer总是返回相同的blah.blah/continue.asp

我尝试了更多的JavaScript DOM路径和一些ColdFusion CGI变量。令人遗憾的是,HTTP请求引用程序在整个过程中丢失了,修复它可以解决我所有的问题。我还发现Query_String CGI变量有数据,如果我能让第三方供应商让我们把UA-XXXXXXXX-1代码作为一个参数传递给他们,他们会忽略这个参数,但我们拉入并插入JavaScript头,我也可以得到所需的功能。