2011-11-17 8 views
7

अगर मैं तरह मेरे पेज में कई स्क्रिप्ट टैग है:बाह्य जावास्क्रिप्ट फ़ाइलों को क्रमशः या समानांतर लोड किया गया है?

<script src="js/jquery-1.7.min.js" type="text/javascript"></script> 
    <script src="js/jquery.jplayer.min.js" type="text/javascript"></script> 
    <script src="js/globals.js" type="text/javascript"></script> 
    <script src="js/sound.js" type="text/javascript"></script> 

मैं तथ्य यह है कि पिछले अभियानों से कोड पहले से ही उपलब्ध है जब बाद वाले लोड हो रहा है पर भरोसा कर सकते हैं?

+0

यह नीचे दिए गए सही उत्तरों के शीर्ष पर उल्लेखनीय लगता है, कि एक स्क्रिप्ट एसिंक्रोनस कोड पेश करके निष्पादन आदेश को "तोड़" सकती है।उदाहरण के लिए, यदि आपकी स्क्रिप्ट में से पहली पंक्ति में 'setTimeout (function() {चेतावनी ("हैलो");}, 0) है;', यह स्क्रिप्ट अन्य स्क्रिप्ट लोड होने के बाद दिखाई देगी। वास्तव में, पूरे एचटीएमएल लोड होने के बाद। लिंक के लिए –

उत्तर

5

सामान्य तौर पर, स्क्रिप्ट डाउनलोड कर रहे हैं क्रमिक रूप से (this page देखें): जावा स्क्रिप्ट कोड एक वेब पेज की सामग्री और लेआउट बदल सकते हैं

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

+1

+1। – Thilo

+0

"कई ब्राउज़र स्क्रिप्ट निष्पादित होने तक संसाधनों को डाउनलोड करने से रोकते हैं": मुझे लगता है कि कई हालिया ब्राउज़र अन्य संसाधनों को पूर्व-प्राप्त करते हैं, हालांकि (यह मानते हुए कि स्क्रिप्ट के नतीजे पर ध्यान दिए बिना, उन्हें अंततः आवश्यकता होगी)। – Thilo

3

वे समानांतर में लोड होते हैं लेकिन वे केवल एक बार लोड होने के बाद ही दौड़ते हैं। तो उत्तर हाँ है, आप इस तथ्य पर भरोसा कर सकते हैं।

5

लघु: हाँ:

स्क्रिप्ट टैग के अंतर्गत निर्दिष्ट करने defer या async गुण के बिना, कल्पना का कहना है, एक ब्राउज़र क्रमानुसार नहीं है (सिंक) उन फ़ाइलों को लोड करते हैं।

दूसरे शब्दों में, एक सादे स्क्रिप्ट टैग जो एक ब्राउज़र की जरूरत है पाता

  • लोड
  • निष्पादित
  • (किसी अन्य प्रस्तुत करना/निष्पादन प्रक्रिया को ब्लॉक, जबकि ऊपर कर)
पाने के लिए

जबकि एक "आधुनिक" ब्राउज़र शायद उस प्रक्रिया को अनुकूलित करने के लिए अभी भी प्रयास करता है, उन चरणों को लागू करने की आवश्यकता है (कम से कम, प्रक्रिया-जैसी)। यही कारण है कि आपको अपने <body> टैग के निचले हिस्से में हमेशा बिना किसी विनिर्देश के स्क्रिप्ट टैग रखना चाहिए। स्क्रिप्ट लोड/निष्पादित करते समय भी डोम रेंडर प्रक्रिया रुक जाती है।

कि बचने के लिए आप एक defer या async (एचटीएमएल 5 केवल) उन स्क्रिप्ट टैग में संपत्ति, जैसे

<script defer src="/foo/bar.js"></script> 

कि ब्राउज़र यह एक स्क्रिप्ट उसके बाद दस्तावेज़ है क्रियान्वित किया जा करने के लिए होती है बताता है निर्दिष्ट कर सकते हैं पार्स किया गया

https://developer.mozilla.org/En/HTML/Element/Script

7

वे समानांतर में (नेटवर्क के माध्यम से) लोड किया जा सकता है देखें, पर वे अनुक्रम में मूल्यांकन किया जाता है।

तो हाँ, आप आदेश पर भरोसा कर सकते हैं।

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