2010-06-06 6 views
10

संपादित करें: के रूप में Andrew Moore इस सवाल ने बताया Two separate script tags for Google Analytics? का डुप्लिकेट तो इस सवाल का स्टैक ओवरफ़्लो को अव्यवस्थित से बचने के लिए, जब तक कि वहाँ, यह एक रखने के बाद से यह शायद थोड़ा अलग खोज में दिखाई देगा में एक बिंदु है हटा दिया जाना चाहिए है।वेब पेज पर कई स्क्रिप्ट ब्लॉक का उपयोग करने में क्या अंतर होता है?

क्या फर्क यह एक वेब पेज पर एक से अधिक स्क्रिप्ट ब्लॉक का उपयोग करने के है? मैंने उदाहरण के रूप में Google Analytics को शामिल करने के लिए मानक कोड में चिपकाया है, और मैंने अन्य स्थानों में समान पैटर्न देखा है। यह कोड केवल एक का उपयोग करने के बजाय दो अलग-अलग स्क्रिप्ट ब्लॉक में क्यों विभाजित है?

<script type="text/javascript"> 
    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); 
    document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); 
</script> 
<script type="text/javascript"> 
    try{ 
     var pageTracker = _gat._getTracker("UA-xxxxxx-x"); 
     pageTracker._trackPageview(); 
    } catch(err) {} 
</script> 
+0

मुझे पता है कि जीए कोड सिर्फ एक उदाहरण है, लेकिन मुझे लगता है कि टैग सार्थक हो सकता है, उदा। लोगों के लिए एक ही चीज़ की तलाश में। –

+0

डुप्लिकेट। मुझे पता है कि मैंने पहले एक ही प्रश्न का उत्तर दिया है ... – Guffa

+1

संभावित डुप्लिकेट [Google Analytics के लिए दो अलग-अलग स्क्रिप्ट टैग?] (Http://stackoverflow.com/questions/1210034/two-separate-script-tags-for- google-analytics) –

उत्तर

5

दूसरा <script> कोड कि google-analytics.com/ga.js लोड हो रहा है पर निर्भर करता है शामिल हैं।

गैर आस्थगित स्क्रिप्ट वे किस क्रम में डोम में मौजूद में क्रियान्वित कर रहे हैं।

पहले <script> एक नई <script> ही के बाद (src गूगल के ga.js की ओर इशारा करते के साथ) जो तुरंत भार लगाता है और कार्यान्वित - उसके बाद ही दूसरा <script> निष्पादित हो करता है।

+0

+1 मुझे इसे दो बार पढ़ने के बाद, मेरे खराब हो गया। – Ben

2

अपने उदाहरण में, पहली स्क्रिप्ट ब्लॉक document.write का उपयोग करता है एक और स्क्रिप्ट तत्व है, जो किसी बाहरी स्क्रिप्ट लोड करता है, और फिर दूसरी स्क्रिप्ट तत्व है कि बाहरी स्क्रिप्ट में परिभाषित चीजों का उपयोग करता है लिखने के लिए। मुझे पूरा यकीन है कि इसे दो स्क्रिप्ट ब्लॉक में विभाजित करना इसके लिए काम करना आवश्यक है।

आप इस तरह के अजीब प्रवंचना का उपयोग नहीं कर रहे हैं, लगातार एक से अधिक स्क्रिप्ट अवरोध डाल आमतौर पर कुछ खास नहीं कर सकते हैं। पृष्ठ के विभिन्न हिस्सों में उन्हें रखना उपयोगी होता है जब आप दस्तावेज़ लोड होने के दौरान स्क्रिप्ट चलाने के लिए चाहते हैं। यदि आपका पृष्ठ बहुत लंबा है, तो हो सकता है कि आप कुछ स्क्रिप्ट को तब भी लोड करना चाहें जब भी यह लोड हो रहा हो, जितनी जल्दी हो सके चीजों को प्रारंभ करने के लिए। विगेट्स के साथ तत्वों को प्रतिस्थापित करना जल्द से जल्द किया जा सकता है ताकि पृष्ठ अंततः लोड होने पर चीजों को कूदने से बच सके।

1

यदि पहले ब्लॉक में कोड अपवाद के साथ समाप्त होता है, तो दूसरा भाग भी काम करेगा।

+0

सच है! संभवतः Google ने ऐसा क्यों नहीं किया (एक 'कोशिश' ब्लॉक इसे हल करेगा), लेकिन यह एक पूरी तरह से मान्य बिंदु है ... –

+1

-1: कारण यह नहीं है कि यह दो ब्लॉक में क्यों अलग हो गया है। और आप जो वर्णन कर रहे हैं वह खराब अभ्यास है (यह IE पर स्क्रिप्ट त्रुटि संवाद पॉप अप करता है)। –

+0

एंड्रयू: एक डाउनवोट के लिए कारण बर्बाद करें। मूल प्रश्न में दो भाग हैं: "वेब पेज पर एक से अधिक स्क्रिप्ट ब्लॉक का उपयोग करने में क्या अंतर होता है?" और Google कोड के बारे में सवाल। यह उत्तर दूसरे भाग को संबोधित नहीं कर सकता है लेकिन निश्चित रूप से पहले भाग को संबोधित करता है और ऐसा कुछ है जो मुझे नहीं लगता है कि व्यापक रूप से ज्ञात है और अन्य उत्तरों द्वारा इसका उल्लेख नहीं किया गया है, इसलिए मैं कहूंगा कि यह सहायक और प्रासंगिक दोनों है। –

5

<script> टैग अनुक्रम में क्रियान्वित कर रहे हैं। एक <script> ब्लॉक निष्पादित नहीं कर सकता है अगर पिछले एक निष्पादित नहीं किया गया है।

पहला <script> टैग Google <script> टैग बनाने का प्रभारी है जो बाहरी जेएस लोड करेगा। बाद पहली <script> को क्रियान्वित करने समाप्त हो गया है, डोम ऐसा दिखाई देता है:

<script></script> <!-- First Script Tag --> 
<script></script> <!-- Google Injected Script --> 
<script></script> <!-- Second Script Tag --> 

ये गारंटी है कि दूसरी <script> टैग तक .js लोड हो रहा है किया जाता है पर अमल नहीं होंगे। यदि पहला और दूसरा <script> संयुक्त किया जाएगा, तो यह _gat वैरिएबल को अपरिभाषित करने का कारण बनता है (चूंकि Google इंजेक्शन स्क्रिप्ट लोडिंग शुरू नहीं हो जाएगी जब तक कि पहली स्क्रिप्ट निष्पादित नहीं हो जाती)।

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