7

GWO & GATC js を実行して別の 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>

私が抱えている問題は、window.location が呼び出される前に GWO & GATC コードが実行されることを保証する必要があることです。setTimeout を実行することもできますが、それは保証を提供せず、追加の読み込み時間が追加されます。

どうすればこれを行うことができるかについてのアイデアはありますか?

4

2 に答える 2

26

私は解決策を見つけたと信じています。関数を_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';
  });

http://code.google.com/apis/analytics/docs/tracking/asyncUsageGuide.html#PushingFunctions

于 2011-04-05T15:45:04.570 に答える
6

_gaq.push はうまくいきませんでした...

既知の setTimeout ソリューションを使用しました。

$('.link-site').click(function(e){
    e.preventDefault();
    _gaq.push(['_trackPageview', '/btn-link-site']);
    window.setTimeout(function(){
        window.location=$('.link-site').attr('href');
    },300);
});
于 2012-06-13T18:42:21.750 に答える