为什么谷歌分析事件没有触发/保存

Why Isn't Google Analytics Event Firing/Saving?

本文关键字:保存 谷歌 事件 为什么      更新时间:2023-09-26

我有一个谷歌分析跟踪器加载到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 会执行并且不会抛出错误。 它也不会注册任何事件。

确保您尝试调用以下 snippte 的页面具有分析.js加载(如果它在 iframe 中)

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

这个问题最终变成了JavaScript范围的问题。

只有当所有调用都适当地在同一 Javascript 范围内时,analytics.js应用程序才有效。 我试图在不同的页面范围内触发 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 应用。