Javascript 将JS回调与Google Analytics结合使用

Javascript 将JS回调与Google Analytics结合使用,javascript,callback,google-analytics,google-website-optimizer,Javascript,Callback,Google Analytics,Google Website Optimizer,我有一个简单的页面,我需要执行一些GWO&gatcjs,然后重定向到另一个url <head> <script> function utmx_section(){}function utmx(){} (function(){var k='xxx',d=document,l=d.location,c=d.cookie;function f(n){ if(c){var i=c.indexOf(n+'=');if(i>-1){var j=c.indexOf(';',i)

我有一个简单的页面,我需要执行一些GWO&gatcjs,然后重定向到另一个url

<head>

<script>
function utmx_section(){}function utmx(){}
(function(){var k='xxx',d=document,l=d.location,c=d.cookie;function f(n){
if(c){var i=c.indexOf(n+'=');if(i>-1){var j=c.indexOf(';',i);return escape(c.substring(i+n.
length+1,j<0?c.length:j))}}}var x=f('__utmx'),xx=f('__utmxx'),h=l.hash;
d.write('<sc'+'ript src="'+
'http'+(l.protocol=='https:'?'s://ssl':'://www')+'.google-analytics.com'
+'/siteopt.js?v=1&utmxkey='+k+'&utmx='+(x?x:'')+'&utmxx='+(xx?xx:'')+'&utmxtime='
+new Date().valueOf()+(h?'&utmxhash='+escape(h.substr(1)):'')+
'" type="text/javascript" charset="utf-8"></sc'+'ript>')})();
</script><script>utmx("url",'A/B');</script>

<script type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push(['gwo._setAccount', 'UA-xxxxxx-x']);
  _gaq.push(['gwo._trackPageview', '/xxxxxxxx/test']);
  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-    analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
</script>

<script>
    window.location = 'MY REDIRECT URL';
</script>
</head>

函数utmx_section(){}函数utmx(){}
(函数(){var k='xxx',d=document,l=d.location,c=d.cookie;函数f(n){
如果(c){var i=c.indexOf(n+'=');如果(i>-1){var j=c.indexOf(';'),i);返回转义(c.substring)(i+n)。

长度+1,j我相信我已经找到了解决方案。事实证明,您可以将函数推送到_gaq。然后按顺序执行_gaq,确保在转到我的重定向之前处理好GA内容

 var _gaq = _gaq || [];
  _gaq.push(['gwo._setAccount', 'UA-xxxxxx-x']);
  _gaq.push(['gwo._trackPageview', '/xxxxxxxx/test']);

  _gaq.push(function(){
    window.location = 'MY REDIRECT URL';
  });

推送对我不起作用

我使用了已知的setTimeout解决方案:

$('.link-site').click(function(e){
    e.preventDefault();
    _gaq.push(['_trackPageview', '/btn-link-site']);
    window.setTimeout(function(){
        window.location=$('.link-site').attr('href');
    },300);
});

这是可行的,也是有道理的,但出于某种原因,在事件被推送到GA队列几毫秒后,使用
setTimeout
重定向。@lucasrizoli和所有我认为该函数将在GA代码发出像素请求后被调用,但不会在它返回后被调用。也许这就是谷歌建议延迟t的原因他重定向,虽然我不知道等待请求返回是否重要。虽然从队列中按顺序处理,但没有任何信息表明前一条指令将在下一条指令被触发之前完成处理=>仍然需要超时时间。但是谷歌正在听这些要求,请继续关注ga.js变更日志这比公认的解决方案要好,因为推送到异步队列的命令是异步发生的:)这可能不会在100%的时间内工作,但它比完全不暂停更有可能成功。这是一种黑客行为,不是一个合适的解决方案。无法保证事件会在重定向之前执行。