Javascript Google Analytics不从FireFox上的iFrame发送页面视图
我们已经编写了一个小部件,打算供我们的客户在他们的网站上使用。客户通过向其站点上的页面添加脚本标记来导入我们的小部件。然后,我们的脚本创建一个iframe(与父级相同的原点),并在iframe内部加载代码库的其余部分 我们希望能够使用google analytics在iframe内外进行跟踪。为此,我们首先在iframe外部初始化GA(使用自定义GA对象名+跟踪器),以获取GA生成的用户clientId。然后,我们使用postMessage在iframe中发送此信息,然后在iframe中初始化ga(不同的自定义ga全局名称+跟踪器名称) 这一切都在Chrome上运行良好,即Safari、Mobile Safari。然而,在FireFox(v28)中,从iframe内部发送的页面视图似乎都没有被接收到 检查时,ga对象似乎已正确初始化,但似乎没有向google发送任何内容 如有任何建议,将不胜感激Javascript Google Analytics不从FireFox上的iFrame发送页面视图,javascript,firefox,iframe,google-analytics,Javascript,Firefox,Iframe,Google Analytics,我们已经编写了一个小部件,打算供我们的客户在他们的网站上使用。客户通过向其站点上的页面添加脚本标记来导入我们的小部件。然后,我们的脚本创建一个iframe(与父级相同的原点),并在iframe内部加载代码库的其余部分 我们希望能够使用google analytics在iframe内外进行跟踪。为此,我们首先在iframe外部初始化GA(使用自定义GA对象名+跟踪器),以获取GA生成的用户clientId。然后,我们使用postMessage在iframe中发送此信息,然后在iframe中初始化g
//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的方式。它导致checkProtocolTask在analytics.js中失败
缩小的检查协议任务:
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”)
应用此覆盖解决了问题