दिलचस्प पोस्ट
महत्वपूर्ण और सीएसएस विशिष्टता के बीच संबंध! हस्ताक्षर किए संख्याओं के लिए साइन-एंड-मैग्नम के लिए दो पूरक क्यों पसंद करते हैं? पायथन मल्टीप्रोसेसिंग पिकिंग त्रुटि मैं कैसे जांच करूं अगर कोई फ़ाइल जावा में मौजूद है? फायरबसे और अनुक्रमण / खोज कैसे CPU उपयोग सी # में प्राप्त करने के लिए? प्रत्येक के लिए जावास्क्रिप्ट में एक सरणी पर? कोणीय और बहस डायनेमिक अर्रेइस्ट आइटम प्रकार के साथ जीएसन टाइपटोकन $ पर Jquery चयनकर्ताओं का उपयोग करें .एक्सएक्स एचटीएमएल लोड हो गया है? प्ले स्टोर पर प्रकाशित ऐप Google मानचित्र एपीआई और फेसबुक एपीआई के साथ संवाद नहीं कर सकता है Backbone.js – Backbone.sync या jQuery.ajax में एक संपूर्ण संग्रह सहेजने के लिए "कैसे"? JQuery प्लगइन्स का उपयोग करना जो कि डीओएम को रिएक्शन कॉम्पोनेंट्स में बदलता है? जब आप c ++ कंसोल एप्लिकेशन को बंद करते हैं तो क्या होता है क्या चयन बॉक्स में केंद्र पाठ संभव है?

जावास्क्रिप्ट: डॉम लोड इवेंट्स, एक्जिक्यूटशन अनुक्रम, और $ (डॉक्यूमेंट) .ready ()

मुझे एहसास हुआ कि मुझे एक मौलिक ज्ञान का अभाव है जो वास्तव में एक पृष्ठ के रूप में होता है क्योंकि एक ब्राउज़र में लोड किया जा रहा है।

मान लें कि मेरे पास इस तरह की संरचना है:

<head> <script src="jquery.js" type="text/javascript"></script> <script src="first.js" type="text/javascript"></script> </head> <body> ... <script type="text/javascript" id="middle"> // some more JS here... </script> ... <script src="last.js" type="text/javascript"></script> </body> 

मेरे पास ये प्रश्न हैं:

  1. क्या हो रहा है चीजें? सबसे पहले तो डीओएम तो जेएस को निष्पादित किया जाता है, क्या यह उप-विपरीत है, या यह एक साथ है (या जैसे ही जेएस फाइल्स डाउनलोड करना समाप्त हो जाता है, डोम के संबंध में)? मुझे पता है कि लिपियों को क्रम में लोड किया जाता है

  2. जहां $(document).ready() फिट है? DOMContentLoaded के नेट टैब में मैं DOMContentLoaded ईवेंट और load इवेंट को देखता DOMContentLoaded । क्या $(document).ready()DOMContentLoaded ईवेंट आग होने पर $(document).ready() ट्रिगर किया? इस पर कोई भी ठोस जानकारी नहीं मिली (सभी केवल "जब डोम भरी हुई है" का उल्लेख करता है)

  3. क्या वास्तव में "जब DOM लोड हो रहा है" मतलब है? यह कि सभी एचटीएमएल / जेएस ब्राउज़र द्वारा डाउनलोड और पार्स किया गया है? या सिर्फ HTML?

  4. क्या निम्न परिदृश्य संभव है: $(document).ready() जो last.js में कोड को कॉल last.js , लेकिन last.js लोड होने से पहले चलाता है? यह सबसे अधिक संभावना होगी (पहले। first.js या इनलाइन कोड ब्लॉक में)? मैं इस परिदृश्य को कैसे रोक सकता हूं?

मैं उस समय की बड़ी तस्वीर को कम करना चाहता हूं, जब और क्या होगा (यदि सभी पर) निर्भर करता है।

वेब के समाधान से एकत्रित समाधान "जावास्क्रिप्ट: डॉम लोड इवेंट्स, एक्जिक्यूटशन अनुक्रम, और $ (डॉक्यूमेंट) .ready ()"

जावास्क्रिप्ट निष्पादित होता है क्योंकि यह देखा जाता है। आम तौर पर , ब्राउज़र पृष्ठ को पर्स करना बंद कर देता है जैसे ही वह <script> टैग, डाउनलोड और स्क्रिप्ट चलाता है, और फिर चलते रहती है। यही कारण है कि इसे आमतौर पर नीचे <script> टैग डालने की सलाह दी जाती है: इसलिए जब उपयोगकर्ता स्क्रिप्ट डाउनलोड करने के लिए प्रतीक्षा करता है, तो उपयोगकर्ता के पास रिक्त पृष्ठ नहीं होता है।

हालांकि, फ़ायरफ़ॉक्स 3.5 से शुरू होने पर, पटकथा को पृष्ठभूमि में डाउनलोड किया जाता है, जबकि बाकी पृष्ठ प्रस्तुत किया जाता है। अब-असामान्य घटना में कि स्क्रिप्ट document.write का उपयोग करता है। document.write या समान, फ़ायरफ़ॉक्स बैकअप लेगा और आवश्यकतानुसार फिर से दोहराएगा मुझे नहीं लगता कि अन्य ब्राउज़र इस समय ऐसा करते हैं, लेकिन मुझे यह आश्चर्य नहीं होगा कि यह आने वाले समय में है, और IE कम से कम <script> टैग में एक defer विशेषता का समर्थन करता है जो पेज के बाद तक स्क्रिप्ट को लोड कर देगी लदा हुआ।

DOMContentLoaded बिल्कुल है कि: यह जैसे ही DOM लोड हो जाता है के रूप में आग लग जाती है। यही है, जैसे ही ब्राउज़र ने सभी HTML को पार्स कर दिया है और इसे आंतरिक रूप से एक पेड़ बनाया है यह लोड करने के लिए छवियों, सीएसएस आदि के लिए इंतजार नहीं करता है। जो भी जावास्क्रिप्ट आप चाहते हैं, उसे चलाने के लिए आपको आम तौर पर डोम की जरूरत है, इसलिए अन्य संसाधनों के लिए इंतजार नहीं करना अच्छा होगा। हालांकि, मेरा मानना ​​है कि फ़ायरफ़ॉक्स DOMContentLoaded का समर्थन करता है; अन्य ब्राउज़रों में, ready() सिर्फ एक ईवेंट को नियमित पुराने onload संलग्न करेगा।

जावास्क्रिप्ट को आपके एचटीएमएल में दिखाई देने वाले क्रम में चलाने की गारंटी है, इसलिए सुनिश्चित करें कि आपका फ़ंक्शन परिभाषित हो जाता है इससे पहले कि आप इसे किसी इवेंट में अटैच करने का प्रयास करें।

  1. सभी लिपि में शामिल होते हैं, ताकि वे HTML में दिखाई दें, जैसे वे HTML पार्स किए जाते हैं।
  2. इसका अर्थ है कि सभी डोमेन ऑब्जेक्ट लोड किए गए हैं, और सभी में स्क्रिप्ट और सीएसएस शामिल हैं। (चित्र शायद अभी तक नहीं)।
  3. 2 देखें
  4. $ (दस्तावेज़) .ready () केवल एक बार सभी लिपियों और डॉम् ऑब्जेक्ट लोड होने पर कॉल हो जाता है, आपको ठीक होना चाहिए

http://javascript.about.com/od/hintsandtips/a/exeorder.htm आपको इसका जवाब देना चाहिए

मूल रूप से: पहले सभी डेटा लोड किए जाते हैं (एचटीएमएल), तो जेएस कोड सिर / शरीर के भीतर होता है जो फंक्शन में नहीं होता है या तैयार होता है या ऐसा कुछ जिसे पहले क्रियान्वित किया जाता है। वहां से यह क्रमिक रूप से लिपियों के बारे में जाता है

इसकी महत्वपूर्ण बात यह है कि जेएस यानी अर्थात् पर प्राथमिकता लेता है। सीएसएस लोडिंग – तो एक प्रदर्शन परिप्रेक्ष्य के रूप में आपके पास पृष्ठ के नीचे जेएस होना चाहिए।

तो @ 4: आपको उस दृश्य को रोकने की आवश्यकता नहीं है क्योंकि first.js को हमेशा last.js से पहले पढ़ा / निष्पादित किया जा रहा है