iframe中的Google Analytic

时间:2014-01-28 00:15:36

标签: javascript iframe google-analytics

我有一个托管第三方网页的iframe(我构建的)。在该页面中,我有一个Google分析,如下所示。但是,Google分析不会跟踪所有条目......

第三个paty页面根据一天中的不同时间将用户重定向到不同的页面。我们还需要做些什么来在iframe中实现Google Analytic吗?

 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-47306399-1', 'serviceportal.com.au');
  ga('send', 'pageview');

2 个答案:

答案 0 :(得分:1)

如果<iframe />元素中的页面与父页面不在同一个域上,那么您将遇到问题(尤其是旧版本的Internet Explorer)。问题是,当<iframe />(包括HTML文档本身)内的页面上加载的每个外部资产都没有正确的P3P标头时,第三方cookie被阻止。这将有效地破坏您的跟踪代码,因为它依赖于第三方Cookie(即为Google控制的域或您使用的任何其他跟踪提供商创建的Cookie)。

如果这是你的问题,我发现了两个问题。

  1. 为IFRAME中加载的所有资产输出正确的P3P标题,以便浏览器不会阻止第三方Cookie。
  2. 使用JS从内页到父页面进行通信,然后使用该通信触发父页面中的跟踪像素。
  3. 我的猜测是,还有其他方法可以做到这一点,这对我有用。

    另外,请注意,您可以尽可能少地更改协议,浏览器会将页面视为不同的域,因此通常最好使用以{{1}开头的URL加载IFRAME }而不是//http://,以便父页面和内页的协议匹配。这就是他们开始时在同一个域上。

    另一个注意事项......请不要只是将任何旧的P3P标题值复制/粘贴到生产环境中,因为它会让IE中的“邪恶之眼”消失。特定的P3P标题“代码”等同于真正的隐私政策声明。

答案 1 :(得分:1)

我工作场所的SEO专家之一能够为我提供解决方案提示

这是一个误导服务器的事实..

正确的代码最终成为

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-47544250-1']);
  _gaq.push(['_setDomainName', 'vserver.com.au']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();