Google Analytics未在FireFox上从iFrame发送页面视图
Google Analytics not sending page views from iFrame on FireFox
我们编写了一个小部件,供客户在其网站上使用。客户通过在其网站的页面上添加脚本标记来导入我们的小部件。然后,我们的脚本创建一个iframe(与父级同源),并在iframe内部加载代码库的其余部分。
我们希望能够使用谷歌分析在iframe内外进行跟踪。我们首先在iframe外部初始化GA(使用自定义GA对象名+跟踪器),以获得用户的GA生成的客户端ID。然后,我们使用postMessage在我们的iframe中发送这些信息,然后在iframe内初始化ga(不同的自定义ga全局名称+跟踪器名称)。
这一切都适用于Chrome、IE、Safari、Mobile Safari。然而,在FireFox(v28)中,从iframe内部发送的页面视图似乎都没有被接收到。
检查时,ga对象似乎已正确初始化,但似乎没有向谷歌发送任何内容。
如有任何建议,我们将不胜感激。
//myGa is the custom named ga global
window.myGa('create', cfg.accountId, {
'name' : 'myga',
'clientId' : cfg.clientId,
'storage' : 'none',
'cookieDomain' : 'none'
});
window.myGa('myga.send', 'pageview', {
'page' : '/my/page',
'title' : 'My Test Page'
});
已解决:
问题在于我们创建iframe的方式。它导致analytics.js 中的checkProtocolTask失败
最小化检查协议任务:
function Oa() {
var a = M[B][E];
if ("http:" != a && "https:" != a) throw "abort";
}
澄清:
//M[B][E] replaces document.location.protocol
在大多数浏览器中,它显示为"http:"并通过,但在FireFox中,它出现为"javascript:"并未通过测试。
解决方案是使用ga"set"方法覆盖任务实现。
window.myGa('myga.set', 'checkProtocolTask', function(){});
(如果您不使用自定义名称,则将myGa替换为"ga",将myGa.set替换为"set")
应用此覆盖解决了问题。
相关文章:
- 在桌面视图的iframe中加载网站
- iOS jquery滚动视图插件不会在iframe上滚动y
- 在asp.net mvc应用程序中的iframe中呈现部分视图
- 如何在 ajax 调用上的 iframe 中加载部分视图
- 如何在 iframe 中加载视图
- 如何将视图(CSHTML)加载到iframe中
- 在股票浏览器中打开链接,而不是从 iframe 打开 Web 视图
- Android网络视图自动填充iFrame值
- 在iframe的src内部的视图中操作html元素
- 使用Zend Framework应用程序将子视图加载到IFrame中
- Youtube视频播放按钮在Android网络视图中的视频iframe中不起作用
- Dynamics 2013访问页面实体很难使用基于iframe的视图进行访问
- 嵌入的youtube视图使用Javascript API进行计数,但不使用IFrame
- 使用iframe中的URL参数过滤视图
- iframe上的链接在iframe中创建页面的另一个视图
- 在jquery ui对话框中加载骨干js视图iframe
- knockout:通过iframe访问视图模型
- 如何打开fanybox弹出视图图像外的iframe有一个图片库在php
- Google Analytics未在FireFox上从iFrame发送页面视图
- CRM iFrame关联的视图记录计数MS Dynamics