Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么不是';谷歌分析事件触发/保存?_Javascript_Jquery_Google Analytics - Fatal编程技术网

Javascript 为什么不是';谷歌分析事件触发/保存?

Javascript 为什么不是';谷歌分析事件触发/保存?,javascript,jquery,google-analytics,Javascript,Jquery,Google Analytics,我已将google analytics tracker加载到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.sr

我已将google analytics tracker加载到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将执行,并且不会抛出错误。它也不会注册任何事件。

请确保您试图调用的Snippete页面已加载analytics.js(如果在iframe中)


这个问题最终成为JavaScript作用域的问题

analytics.js
应用程序只有在所有调用都在相同的Javascript范围内时才起作用。我试图在不同的页面范围内触发GA事件(由于嵌入了JS应用程序和iFrames,这很复杂)

解决办法如下:

<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>

(函数(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]| |函数(){
(i[r].q=i[r].q | |[]).push(参数)},i[r].l=1*新日期();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(窗口,文档,“脚本”,“www.google-analytics.com/analytics.js”,“ga”);
ga(“创建”、“UA我的id”);
ga('set','hostname','awesome.com');
ga('set','location','/path/to/awesome');
ga('set'、'referer'、'referer_值');
ga(‘集合’、‘标题’、‘很棒的应用’);
ga(‘发送’、‘页面浏览’);
window.trackGAEvent=函数(eventName,value){
ga('send','event','awesome_app',eventName,value);
}

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

您确定它没有尝试启动,并且您很快就被重定向到新页面了吗?执行它的代码是什么样子的?使用HTTP代理工具,如Fiddler或Charles proxy,您看到请求了吗?我在页面上有一个JS应用程序,使用jQuery跟踪点击事件和交互。我使用Chrome Inspector监视网络请求,并使用JS控制台调试语句或错误。我看到了跟踪页面视图的最初AJAX调用,但没有看到任何事件。这是我已经在使用的代码。这个问题最终变成了另一个问题,我将发布答案。
<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>