首先,我在互联网上搜索了建议和解决方案,我根据this blog post构建了一个测试用例。问题是真实世界的网站/设置比静态测试iFramed内容的静态测试页面要多得多。
我可以将Google Analytics跟踪javascript放在标题中,但我需要动态选择要使用的分析跟踪代码。
有一个好消息,父页面由'我们'拥有,动态内容将伸出并从'我们'中拉出一个标题,然后它们会添加到动态内容中。标题甚至可以是ColdFusion(.cfm)文件,问题是ColdFusion在发送到第三方之前会被评估。当第三方进行重定向并使用多个子域来提供动态内容时,情况会变得更糟。
以前在ColdFusion外联网网站上,ColdFusion用于检查服务器变量,以确定要使用的Google Analytic跟踪代码。在我的测试中,这不是一个选项,因为获取标头的方式以及标头位于同一服务器上的事实,无论它从何处获取,我们都无法从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>
我们希望使用单独的Google Analytic跟踪代码跟踪3个主要案例,即UA-XXXXXXXX-1,UA-XXXXXXXX-2,UA-XXXXXXXX-3,这些代码位于三个不同的域中,但只有一个标题.cfm文件。我可以使用document.domain或window.location.hostname来区分外联网和互联网之间的区别,因为动态内容来自不同的来源,但我不太确定我可以区分两个不同的互联网网站。动态内容区分B2C和B2B使用,因此多个B2C互联网网站提供相同的数据。外联网站点始终获取B2B数据。 B2C位于subdomain1.host.com上,B2B位于subdomain2.host.com上。
使用JavaScript有一个很好的方法吗?我们应该在URL中附加参数吗?我甚至使用元标记或隐藏的表单字段来传递信息...我更喜欢根据引用/主机将头文件中的JavaScript显示出来,但我不确定它是否可以归因于所有重定向和动态iFramed内容。 document.referrer总是回来同样的blah.blah / continue.asp