7

के साथ जेएस कॉलबैक का उपयोग करना मेरे पास एक साधारण पृष्ठ है जिसे मुझे कुछ GWO & GATC जेएस निष्पादित करने और फिर किसी अन्य यूआरएल पर रीडायरेक्ट करने की आवश्यकता है।Google Analytics

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

समस्या मैं आ रही है मैं गारंटी नहीं है कि GWO & GATC कोड से पहले अपने विंडो स्थान कहा जाता है निष्पादित किया जाता है की जरूरत है। मैं सेटटाइमआउट कर सकता था, लेकिन यह कोई गारंटी नहीं देता है और अतिरिक्त लोड समय जोड़ता है।

मैं यह कैसे कर सकते हैं पर कोई भी विचार?

उत्तर

26

मेरा मानना ​​है कि मुझे समाधान मिला है। यह पता चला है, आप कार्यों को _gaq पर धक्का दे सकते हैं। इसके बाद _gaq को अनुक्रमिक रूप से निष्पादित किया जाता है ताकि जीए सामान को मेरे रीडायरेक्ट में आने से पहले ख्याल रखा जा सके।

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

+9

यह काम करता है और समझ में आता है लेकिन कुछ कारणों से [आधिकारिक सुझाव] (http://www.google.com/support/analytics/bin/answer.py?answer=55527) ईवेंट को धक्का देने के बाद कुछ एमएस को पुनर्निर्देशित करने के लिए 'setTimeout' का उपयोग करना है) जीए कतार। – lucasrizoli

+2

@ लुकास्रिज़ोली और मुझे लगता है कि एक बार जीए कोड द्वारा पिक्सेल के अनुरोध के बाद समारोह को बुलाया जाएगा, लेकिन इसके बाद नहीं। शायद यही कारण है कि Google रीडायरेक्ट में देरी करने का सुझाव देता है हालांकि मुझे नहीं पता कि वापस लौटने के अनुरोध का इंतजार करना महत्वपूर्ण है या नहीं। –

+8

कतार से अनुक्रम में संसाधित होने पर, कुछ भी नहीं कहता है कि पिछले निर्देशों को समाप्त करने से पहले पिछले निर्देशों को संसाधित किया जाएगा => टाइमआउट की आवश्यकता है। हालांकि Google इस तरह की आवश्यकताओं को सुन रहा है, ga.js changelog पर ट्यून किया गया http://code.google.com/intl/fr/apis/analytics/community/gajs_changelog.html –

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); 
}); 
+4

यह स्वीकार्य समाधान से बेहतर है क्योंकि एसिंक कतार में धक्का दिया गया आदेश, असीमित रूप से होता है :) यह शायद 100% समय तक काम नहीं करेगा, लेकिन यह बिल्कुल रोके जाने की तुलना में सफल होने की अधिक संभावना है। – dana

+1

यह एक हैक है और उचित समाधान नहीं है। इस बात की कोई गारंटी नहीं है कि रीडायरेक्ट से पहले ईवेंट निष्पादित किया जाएगा। –