2012-01-01 27 views
35

मुझे Analytics कोड सहित सफलतापूर्वक रीडायरेक्ट करने का तरीका जानने में सहायता चाहिए।Google Analytics के साथ जावास्क्रिप्ट रीडायरेक्ट

रीडायरेक्ट फ़ाइल के लिए कोड पर रीडायरेक्ट में एक HTML फ़ाइल है :

<head> 
<script type="text/javascript"> 
function delayedRedirect(){ 
    window.location = "https://market.android.com/developer?pub=Fractal%20Systems" 
} 
</script> 
<script type="text/javascript"> 

    var _gaq = _gaq || []; 
    _gaq.push(['_setAccount', 'UA-1234567-8']); <!--I have my real ID there--> 
    _gaq.push(['_trackPageview']); 

    (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> 
</head> 
<body onLoad="setTimeout('delayedRedirect()', 3000)"> 
<h2>ADW.BuuF.Theme is no more! You will be redirected to new and better apps in 3 seconds.</h2> 
</body> 
</html> 

यह काम करता है केवल एक रीडायरेक्ट के रूप में यदि मैं अपना Analytics कोड शामिल नहीं करता हूं। मैंने बिना किसी परिवर्तन के कोड को स्थानांतरित करने का प्रयास किया है।

प्रश्न मैं किसी भी प्रकार का रीडायरेक्ट कैसे जोड़ सकता हूं, और फिर भी Google Analytics के साथ ट्रैक करने में सक्षम हूं?

मैंने PHP सफलता के बिना रीडायरेक्ट की कोशिश की है और मुझे यकीन है कि htaccess रीडायरेक्ट मदद नहीं करेंगे हालांकि मैं सुझावों के लिए खुला हूं।

कारण मैं जावास्क्रिप्ट रीडायरेक्ट का उपयोग कर रहा हूं इसलिए मैं Google Analytics के साथ ट्रैक करना जारी रख सकता हूं और देरी के साथ एक छोटा संदेश भी दिखा सकता हूं या कस्टम पेज भी बना सकता हूं।

किसी भी मदद के लिए धन्यवाद। यदि आप समाधान के बारे में जानते हैं, तो कृपया जेएस होना जरूरी नहीं है, कृपया कोई इनपुट स्वागत है।

+1

आप [मेटा रिफ़्रेश] का उपयोग कर प्रयास किया था (http://en.wikipedia.org/wiki/Meta_refresh)? – balexandre

उत्तर

6

meta refresh का उपयोग करके एक आकर्षण की तरह काम किया! विरासत एफटीडब्ल्यू! धन्यवाद, @ बैलेक्सेंड्रे

<html> 
<head> 
<meta http-equiv="refresh" content="5; url=https://market.android.com/developer?pub=Fractal%20Systems"> 
<script type="text/javascript"> 

    var _gaq = _gaq || []; 
    _gaq.push(['_setAccount', 'UA-1234567-8']); 
    _gaq.push(['_trackPageview']); 

    (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> 
</head> 
<body> 
<h2>ADW.BuuF.Theme is no more! You will be redirected to new and better apps in 5 seconds.</h2> 
</body> 
</html> 

RECAP: अब मैं Google Analytics का उपयोग करके उन रीडायरेक्ट को ट्रैक करते समय रीडायरेक्ट करने में सक्षम हूं!

मेटा ताज़ा (wikipedia से लिया)

उदाहरण

प्लेस के अंदर 5 सेकंड के बाद पृष्ठ को ताज़ा करने:

<meta http-equiv="refresh" content="5"> 

5 सेकंड के बाद http://example.com/ यहां रीडायरेक्ट करें:

<meta http-equiv="refresh" content="5; url=http://example.com/"> 

पर रीडायरेक्ट करेंतुरंत:

<meta http-equiv="refresh" content="0; url=http://example.com/"> 
+0

तेजी से रीडायरेक्ट करने के बारे में कोई विचार (और 5 एस नहीं)? –

+0

@DS_web_developer यह समाधान मेरे लिए काम करता है, आप कोशिश कर सकते हैं और बस 'सामग्री = 5' मान को किसी और चीज़ में बदल सकते हैं, लेकिन यह सबसे मजबूत नहीं है ... आपको http://stackoverflow.com/a/ का उपयोग करना चाहिए 8692588/805031 – TryTryAgain

14

मैं इस को बदलकर एसिंक्रोनस के बजाय तुल्यकालिक होने के लिए अपने Google Analytics कोड बदलने का सुझाव चाहते हैं:

<script type="text/javascript"> 
    var _gaq = _gaq || []; 
    _gaq.push(['_setAccount', 'UA-1234567-8']); 
    _gaq.push(['_trackPageview']); 
</script> 
<script type="text/javascript" src="http://www.google-analytics.com/ga.js"></script> 

इस बात की गारंटी चाहिए कि यह में आपकी रीडायरेक्ट कोड किक से पहले चलाता है और यह आपकी रीडायरेक्ट स्क्रिप्ट के रास्ते से बाहर होना चाहिए, इसलिए कोई हस्तक्षेप नहीं है। जैसा कि आपके पास है, आप अनुमान लगा रहे हैं कि GA स्क्रिप्ट कितनी देर तक लोड हो जाएगी और यह लोड हो जाएगी और यह 3 सेकंड के भीतर काम करेगा। यह आम तौर पर मामला हो सकता है, लेकिन इसे असीमित रूप से लोड करने का कोई कारण नहीं है जैसे आप हैं और उस खेल को खेलना है। इसे समकालिक रूप से लोड करें और यह आपके जावास्क्रिप्ट को रीडायरेक्ट आग से पहले यह काम करेगा।

<script type="text/javascript"> 
    var _gaq = _gaq || []; 
    _gaq.push(['_setAccount', 'UA-1234567-8']); 
    _gaq.push(['_trackPageview']); 
</script> 
<script type="text/javascript" src="http://www.google-analytics.com/ga.js"></script> 
<script type="text/javascript"> 
    window.location = "https://market.android.com/developer?pub=Fractal%20Systems"; 
</script> 
+0

धन्यवाद, यह मैंने कोशिश की सभी रीडायरेक्ट विधियों के साथ काम करता है। जानकार अच्छा लगा। – TryTryAgain

42

नोट:: _gaq.push कतार पर कार्यों का धक्का अनुमति देता है

यह भी सिर्फ इस तरह जीए कोड के बाद सीधे रीडायरेक्ट कर दिया और आपके प्लेसहोल्डर पृष्ठ प्रदर्शित होता है कम करने के लिए संभव हो सकता है। निम्नलिखित कोड 250 मिलीसेकंड (ट्रैकिंग पिक्सेल को समय देने हेतु) _trackPageview के बाद के बाद रीडायरेक्ट करना चाहिए:

var _gaq = _gaq || []; 
_gaq.push(['_setAccount', 'UA-1234567-8']); 
_gaq.push(['_trackPageview']); 
_gaq.push(function() { 
    setTimeout(function() { 
     window.location = "https://market.android.com/developer?pub=Fractal%20Systems"; 
    }, 250); 
}); 

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

बिल्कुल सही जवाब। आप बॉडी टेक्स्ट में रीडायरेक्ट यूआरएल में एक साधारण टेक्स्ट लिंक जोड़ सकते हैं, ताकि जावास्क्रिप्ट के बिना उपयोगकर्ता रीडायरेक्ट यूआरएल तक पहुंच सकें। इसके अतिरिक्त, पुशिंग फ़ंक्शंस पर अनुभाग के साथ Google संदर्भ दस्तावेज़ यहां पाया जा सकता है: https://developers.google।com/analytics/devguides/collection/gajs/# पुशिंग फ़ंक्शन – kontur

+0

मुझे विश्वास नहीं है कि आपको टाइमआउट की आवश्यकता है - छवि के लिए अनुरोध हमेशा रीडायरेक्ट से पहले बाहर जाना चाहिए - इससे कोई फर्क नहीं पड़ता कि क्लाइंट को कभी भी कोई डेटा वापस नहीं मिलता है –

+0

@Simon_Weaver ने सहमति व्यक्त की कि क्लाइंट को कभी भी कोई डेटा वापस नहीं मिलता है, लेकिन ऐसा लगता है (कम से कम क्रोम और फ़ायरफ़ॉक्स के साथ) कि ब्राउज़र ट्रैकिंग पिक्सेल अनुरोध नहीं करेगा यदि अनुरोध शुरू होने के बाद विंडो बहुत जल्दी बदल जाती है। Google में देरी का उपयोग करने के बारे में भी एक नोट है, लेकिन उनके कोड को मिक्स किया गया है, सिंक और एसिंक शैली विश्लेषिकी मिश्रण। – mike

2

मेटा ताज़ा आम तौर पर क्योंकि प्रयोज्य चिंताओं (विशेष रूप से एक कम है, या कोई देरी के साथ), लेकिन जैसा कि की हतोत्साहित किया जाता है फॉलबैक बिना जावास्क्रिप्ट वाले क्लाइंट्स के लिए मुझे लगता है कि यह इस मामले में पूरी तरह मान्य है।

आप तुल्यकालिक ga.js एक मेटा के साथ कॉल गठबंधन तो ताज़ा आप दोनों दुनिया का सबसे अच्छा मिलता है: एक लगभग तत्काल, ट्रैक किए गए रीडायरेक्ट अगर जे एस सक्षम किया गया है; देरी हो लेकिन अभी भी प्रभावी रीडायरेक्ट नहीं है (और शरीर में एक कठिन लिंक बस सब कुछ विफल होने पर)।

<html> 
<head> 
    <!--For JS disabled: decent delay, both for usability and to allow plenty of time for JS to work if enabled --> 
    <meta http-equiv="refresh" content="5;https://market.android.com/developer?pub=Fractal%20Systems"/> 
    <script> 
     var _gaq = _gaq || []; 
     _gaq.push(['_setAccount', 'UA-1234567-8']); 
     _gaq.push(['_trackPageview']); 
    </script> 
    <!--Synchronous call to ensure tracking fires before JS redirect--> 
    <script type="text/javascript" src="//www.google-analytics.com/ga.js"></script> 
    <script> 
     /* if JS is enabled this will normally fire well before the meta refresh delay ends: an almost instantaneous redirect */ 
     window.location="https://market.android.com/developer?pub=Fractal%20Systems"; 
    </script> 
</head> 
<body> 
    <!-- Include a hard link in case both js and the meta refresh fail --> 
    <p>Redirecting you to <a href="https://market.android.com/developer?pub=Fractal%20Systems">https://market.android.com/developer?pub=Fractal%20Systems</a></p> 
</body></html> 
-1

मुझे लगता है कि हो सकता है सिर्फ jQuery तैयार विधि उपयोग करती हैं इसलिए टाइमर शुरू नहीं होगी जब तक पृष्ठ पूरी तरह लोड ...

<script type="text/javascript" charset="utf-8"> 
$(document).ready(function() {  
    setTimeout(function() { 
     //alert("redirecting!"); 
     window.location = '<?= $url ?>'; 
    }, 3000); 
}); 
</script> 
+1

इस मामले में jQuery का उपयोग करना बहुत अधिक है, और सबसे अधिक, अनावश्यक है। –

9

वास्तव में Mike द्वारा code provided काम करता है। हालांकि, मैंने पाया कि टाइमर को पूरी तरह से काम करता है। __utm.gif अनुरोध को तब निरस्त कर दिया गया है, लेकिन सभी जानकारी भेजी गई है। विंडो बस रीडायरेक्ट करती है और उत्तर की प्रतीक्षा नहीं करती है (जो कि केवल 200 स्थिति है)। मैंने इसका परीक्षण किया और ऐसा लगता है कि यह अच्छी तरह से काम कर रहा है।

var _gaq = _gaq || []; 
_gaq.push(['_setAccount', 'UA-1234567-8']); 
_gaq.push(['_trackPageview']); 
_gaq.push(function() { 
    window.location = "https://market.android.com/developer?pub=Fractal%20Systems"; 
}); 


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

यह समाधान खूबसूरती से काम करता है ... लेकिन यदि किसी उपयोगकर्ता को जावास्क्रिप्ट अक्षम किया गया है, तो क्या GA न केवल काम नहीं करेगा, लेकिन पृष्ठ भी रीडायरेक्ट नहीं करेगा? क्या इस स्क्रिप्ट के बाद 'मेटा' रीडायरेक्ट करना सबसे अच्छा होगा, बस मामले में? – user1997781

20

आप आप बस इस कोड के साथ इस लाइन ga('send', 'pageview'); जगह ले सकता है नया जीए कोड उपयोग कर रहे हैं: पूर्ण में

ga('send', 'pageview', { 
    'hitCallback': function() { 
     window.location = "http://www.your-site.com"; 
    } 
}); 

उदाहरण:

(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-xxxxxxx-2', 'auto'); 

ga('send', 'pageview', { 
    'hitCallback': function() { 
     window.location = "http://www.your-site.com"; 
    } 
}); 
+0

ऑटो को उद्धृत किया जाना चाहिए – Tosh

+0

@Tosh आप सही हैं। धन्यवाद कर दिया। – Jarrod

0

यह दृष्टिकोण एक देरी की आवश्यकता नहीं है। पहले Google Analytics कोड को समकालिक रूप से निष्पादित करें और फिर रीडायरेक्ट करें।

<html> 
<head> 
<script src="//www.google-analytics.com/analytics.js"></script> 
    <script> 
    var tracker = ga.create('UA-xxxxxxxx-x', 'auto'); 
    tracker.send('pageview'); 
    window.location='http://your-url.com'; 
    </script> 
</head> 
<body> 
</body> 
</html> 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^