javascript - iframe 内的 Google Analytics

标签 javascript iframe google-analytics

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

第三个页面根据一天中的不同时间将用户重定向到不同的页面。要在 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');

最佳答案

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

如果这是您的问题,我找到了两个修复方法。

  1. 为 IFRAME 内加载的所有资源输出正确的 P3P header ,以便浏览器不会阻止第 3 方 Cookie。
  2. 使用 JS 从内页到父页进行通信,然后使用该通信触发父页的跟踪像素。

我的猜测是还有其他方法可以做到这一点,这对我有用。

另外,请注意,您只需更改协议(protocol)即可,浏览器会将页面视为位于不同的域中,因此通常最好使用以 // 开头的 URL 加载 IFRAME。而不是http://https://这样父页面和内页面的协议(protocol)就会匹配。这只是如果它们一开始就位于同一个域中的话。

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

关于javascript - iframe 内的 Google Analytics,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21394489/

相关文章:

javascript - 我想在 iframe 关闭后重新加载页面 bt 它在加载时重新加载?

javascript - 将鼠标事件分派(dispatch)到 iframe 窗口?

google-analytics - 如何从 Google Analytics 中排除 oauth referrer?

google-analytics - 使用Google.Apis.Analytics.v3

Javascript 显示无效日期

javascript - 如何将 Html 表格数据保存在 .txt 文件中?

javascript - 将构造函数添加到 'parent' 对象的属性

javascript - 一个简单的 If...else block 。为什么它什么都不做?

php - 正确的语法以在iframe中回显变量

redirect - Google Analytics(分析)是否将 URL 转发计为推荐流量?