2

我已经将谷歌分析跟踪器加载到 iFrame 中:

  (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-my-id-here');
  ga('set', 'location', 'http://foo.com/bar');
  ga('set', 'title', 'Awesome');

  ga('send', 'pageview');

我还有自定义 Javascript 试图跟踪同一页面上富客户端应用程序中的事件,该页面引用了上面的 ga 实例,并尝试发送事件:

ga('send', 'event', 'my_category', 'my_event', 'my_value');

当我加载页面时,我看到正确跟踪的初始综合浏览量。当我单击并触发自定义事件跟踪时,JavaScript 会执行并且不会引发错误。它也不注册任何事件。

4

2 回答 2

0

问题最终成为 JavaScript 范围的问题。

analytics.js应用程序仅在所有调用都适当地位于同一 Javascript 范围内时才有效。我试图在不同的页面范围内触发 GA 事件(由于嵌入式 JS 应用程序和 iFrame,这很复杂)。

解决方案如下:

<script type="text/javascript">
  (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-my-id');
  ga('set', 'hostname', 'awesome.com');
  ga('set', 'location', '/path/to/awesome');
  ga('set', 'referrer', 'REFERRER_VALUE');
  ga('set', 'title', 'Awesome App');

  ga('send', 'pageview');

  window.trackGAEvent = function(eventName, value) {
    ga('send', 'event', 'awesome_app', eventName, value);
  }
</script>

诀窍是封装ga事件send调用。我可以通过向下钻取 DOM 从其他上下文调用此方法,但我不能直接从适当的上下文之外调用 GA 应用程序。

于 2014-04-08T15:20:56.540 回答
0

确保您尝试调用以下片段的页面已加载 analytics.js(如果它在 iframe 中)

ga('send', 'event', 'my_category', 'my_event', 'my_value');
于 2014-04-08T11:21:13.930 回答