1

首先,我在整个互联网上搜索了建议和解决方案,我根据这篇博文构建了一个测试用例。问题是真实世界的网站/设置比具有静态测试 iFramed 内容的静态测试页面涉及更多。

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

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

以前在 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,它们位于三个不同的域中,但只有一个 header.cfm 文件. 我可以使用 document.domain 或 window.location.hostname 来区分 Extranet 和 Internet,因为动态内容来自不同的来源,但我不太确定我能分辨出两个不同 Internet 网站之间的区别。动态内容区分 B2C 和 B2B 的使用,因此为多个 B2C 互联网网站提供相同的数据。Extranet 站点始终获取 B2B 数据。B2C 位于 subdomain1.host.com 上,B2B 位于 subdomain2.host.com 上。

有没有用 JavaScript 做到这一点的好方法?我们应该在 URL 中附加一个参数吗?我什至使用元标记或隐藏表单字段来传递信息......我更愿意让标头中的 JavaScript 根据引用者/主机来解决这个问题,但我不确定它是否可以由于所有重定向和动态 iFramed 内容。document.referrer 总是返回相同的 blah.blah/continue.asp

4

0 回答 0