【问题标题】:Google Analytics not sending page views from iFrame on FireFoxGoogle Analytics 未从 FireFox 上的 iFrame 发送页面浏览量
【发布时间】:2014-04-14 18:34:10
【问题描述】:

我们制作了一个小部件,供我们的客户在其网站上使用。客户通过将脚本标签添加到他们网站上的页面来导入我们的小部件。然后我们的脚本创建一个 iframe(与父级相同的来源),并在 iframe 中加载我们代码库的其余部分。

我们希望能够使用谷歌分析来跟踪 iframe 的外部和内部。我们首先在 iframe 之外初始化 GA(使用自定义 ga 对象名称 + tracker),目的是获取用户的 ga 生成的 clientId。然后我们使用 postMessage 在 iframe 中发送这些信息,然后在 iframe 中初始化 ga(不同的自定义 ga 全局名称 + 跟踪器名称)。

这一切都适用于 Chrome、IE、Safari、Mobile Safari。但是在 FireFox (v28) 中,从 iframe 内部发送的页面浏览量似乎都没有被接收到。

检查时,ga 对象似乎已正确初始化,但似乎没有发送给 google。

任何建议将不胜感激。

//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'
            });

【问题讨论】:

    标签: javascript firefox iframe google-analytics


    【解决方案1】:

    已解决:

    问题在于我们创建 iframe 的方式。它导致了 analytics.js 中的 checkProtocolTask​​ 失败

    缩小的 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”)

    应用此覆盖解决了问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多