Javascript 为什么不是';谷歌分析事件触发/保存?
我已将google analytics tracker加载到iFrame中: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
(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>