2012-10-31 12 views
6

का उपयोग क्यों करते हैं Google Analytics ट्रैकिंग कोड में क्यों, क्या वे इन पंक्तियों को बंद में लपेटते हैं?Google Analytics ट्रैकिंग कोड में, वे एक बंदरगाह

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

क्या यह माता-पिता के बंद होने के बिना भी काम नहीं करेगा?

+3

यह 'जीए' और 'एस' चर के साथ वैश्विक नामस्थान को प्रदूषित करने से बचने के लिए है। – AKX

उत्तर

7

यह वही काम करेगा, लेकिन अगर आप Google कोड में उपयोग किए गए पहचानकर्ता के साथ एक चर घोषित कर चुके हैं, तो यह आसानी से आपके पृष्ठ पर अन्य स्क्रिप्ट तोड़ सकता है।

एक बंद करने में घोषणा को लपेटकर, चर को अज्ञात फ़ंक्शन पर स्कॉप्ड किया जाता है और वैश्विक दायरे में रिसाव नहीं होता है। इसके बिना

var ga = "something important for my script"; // Not overwritten in this scope 

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

और यह उदाहरण:

उदाहरण के लिए, नई गुंजाइश के साथ इस उदाहरण पर विचार

var ga = "something important for my script"; // Overwritten! 

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); 
3

यह रूप में लंबे समय में एक ही काम करेगा क्योंकि इसमें कोई वैश्विक क्षेत्र चर परिभाषित किया गया एक ही नाम का उपयोग कर। एक बंद करने में कोड को लपेटना इसे अपने दायरे में रखता है ताकि यह पृष्ठ पर किसी भी अन्य कोड से स्वतंत्र हो।

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