2012-11-16 36 views
8

मेरे पास मेरी साइट पर कुछ Google Analytics ट्रैकिंग कोड (GATC) है जो Google के कोड में _gaq.push विधि पर कॉल ट्रिगर करता है।जांच कर रहा है कि क्या Google Analytics _gaq ऑब्जेक्ट लोड किया गया है और

परिदृश्य कि जीए उपलब्ध नहीं है, या _gaq लोड नहीं है, मैं यह सुनिश्चित करें कि मैं पृष्ठ पर किसी भी जावास्क्रिप्ट त्रुटि तो नहीं है नहीं करना चाहती। यह जांचकर कि _gaq 'अपरिभाषित' के समान नहीं है - क्या यह जांचने के लिए पर्याप्त होगा कि यह उपलब्ध है या यह एक्स-ब्राउज़र है? मैंने Google के दस्तावेज़ों पर एक नज़र डाली है, लेकिन इसमें इसके बारे में कुछ भी उल्लेख नहीं है।

मुझे यह जांचने के बारे में पता है कि ऑब्जेक्ट null है, लेकिन मुझे यकीन नहीं है कि यह आवश्यक है या नहीं।

var _gaq = _gaq || []; 

तो, सरणी हमेशा उपलब्ध अगर आप अपने कोड में इस लाइन रखने होना चाहिए:

if (typeof(_gaq) !== 'undefined') { 
    _gaq.push(['_trackEvent', 'Downloaded Video', 'Yes']); 
    _gaq.push(['rollup._trackEvent', 'Downloaded Video', 'Yes']);          
} 

उत्तर

18

सिफारिश जावास्क्रिप्ट कोड आप Analytics से मिली में, यह निम्न पंक्ति में शामिल हैं। यदि आप बाद में एनालिटिक्स कोड जोड़ रहे हैं, तो बस अपनी मुख्य स्क्रिप्ट से पहले ऊपर की रेखा जोड़ें और यह काम करेगा।

ध्यान दें कि यह टुकड़ा हानिरहित है, भले ही आप से पहले _gaq परिभाषित है, क्योंकि यह केवल एक नई सरणी के रूप में यह परिभाषित करता है, तो यह पहले से अनिर्धारित रहता है।

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

+1

मैं '_gaq' चर को फिर से परिभाषित नहीं करना चाहता, क्योंकि मेरे पास Google द्वारा प्रदान किए गए कोड में यह सेट है। मेरे पास अपने कोड में कहीं और पुश कॉल है। _gaq को फिर से परिभाषित करना जोखिम भरा लगता है। – crmpicco

+3

मैं नहीं कह रहा हूं कि आपको इसे फिर से परिभाषित करना चाहिए। मेरा मुद्दा यह है कि यदि आपने इसे पहले से ही दस्तावेज़ों की तरह जोड़ा है, तो आप अब अपरिभाषित की जांच नहीं कर सकते - और आपको इसकी आवश्यकता नहीं है। – David

1

@David के रूप में, जब तक आपके पास var _gaq = _gaq || []; स्निपेट पहले परिभाषित किया गया है, तो आप ठीक हैं और _gaq को अपरिभाषित करने की आवश्यकता नहीं है।

_gaq का कारण रिक्त सरणी के रूप में परिभाषित किया जा रहा है यदि इसे पहले अपरिभाषित किया गया था ताकि यह push विधि हो। यह आपके एनालिटिक्स कोड को GA कोड लोड होने से पहले निष्पादित करने की अनुमति देता है, या कुछ मामलों में जब यह उपलब्ध नहीं होता है।

जब GA लोड करता है, _gaq को push विधि वाले ऑब्जेक्ट के रूप में फिर से परिभाषित किया जाएगा, और पुरानी _gaq सरणी की कोई मौजूदा सामग्री निष्पादित की जाएगी।

3

जब ga.js भरी हुई है, यह एक window._gat (ध्यान रहे Q के बजाय टी) वैश्विक वस्तु, तो आप सिर्फ अगर यह या परिभाषित नहीं है का परीक्षण (लेकिन सावधान रहना यह अतुल्यकालिक रूप से भरी हुई है, तो आप अपने परीक्षण में देरी हो सकती) की जरूरत को परिभाषित करता है ।

4

आपको आमतौर पर यह जांचने की आवश्यकता नहीं है कि यह परिभाषित किया गया है क्योंकि Google Analytics कोड स्निपेट आपके लिए यह करता है। हालांकि अगर आप अपनी स्टि के अन्य वर्गों में इवेंट ट्रैकिंग की तरह कुछ कर रहे हैं क्योंकि सवाल बताता है कि यह कभी-कभी जांचना अच्छा होता है कि स्क्रिप्ट लोड होने के बाद से यह असीमित है या नहीं।

मैंने GA के लिए एक jQuery प्लगइन रैपर लिखा था और कोड में जांचना चाहता था कि जीए वास्तव में स्थापित किया गया था या नहीं, इससे पहले कि मैंने किसी भी डेटा को धक्का दिया। यह मामला कवर करना था कि किसी ने GA के बिना प्लगइन का उपयोग करने की कोशिश की या जीए शुरू होने से पहले।यह करने के लिए

_gaq.push(['_trackEvent', 'Downloaded Video', 'Yes']); 

:

if (typeof(_gaq) == 'undefined') { 
    console.error("Google Analytics is not installed"); 
} 
+2

यह मेरे लिए सही जवाब है। हम केवल उत्पादन साइटों पर ट्रैकिंग स्क्रिप्ट (गूगल प्लस अन्य) प्रस्तुत करते हैं, इस प्रकार देव/यूएटी _gaq पर परिभाषित नहीं किया गया है। और यह पूरी तरह से काम करता है। धन्यवाद – Jag

+0

_gaq ट्रैकिंग स्निपेट द्वारा बनाया गया है, जब ga.js लोड नहीं होता है। यह पर्याप्त नहीं है। Http://stackoverflow.com/a/13450713/307687 इसके बजाय –

50

आप युनिवर्सल Analytics (analytics.js) का उपयोग कर रहे हैं तो यह स्विच

ga('send', 'event', 'Downloaded Video', 'Yes'); 
+1

देखें इसे सही उत्तर के रूप में चिह्नित किया जाना चाहिए। आपकी सहायता के लिए धन्यवाद. –

+0

मदद करने में खुशी :) – Mike

+1

@ श्री हार्डी मैं यूनिवर्सल Analytics का उपयोग नहीं कर रहा हूं, इसलिए मैं इसे सही उत्तर के रूप में स्वीकार नहीं कर सकता। – crmpicco

0

आप js में कहीं ईवेंट ट्रैकिंग जोड़ना चाहते हैं, लेकिन सीएमएस केवल गैर-लॉग इन आगंतुकों, या कुछ पृष्ठों के लिए Google Analytics को जोड़ता है। फ़ंक्शन के लिए निम्न जांच कार्य करेगी:

if (typeof(ga) === 'function') { 
    ga('send', 'event', 'what', 'has', 'happened'); 
}