दिलचस्प पोस्ट
एक टाई के मामले में पायथन क्या चुनता है? सीरियललाइज़ करने के लिए सबसे तेज़ तरीका है और नेट ऑब्जेक्ट्स को डीएसरियल करना स्वयं हस्ताक्षरित प्रमाण पत्र स्वीकार करने के लिए इंटरनेट एक्सप्लोरर 8 प्राप्त करने के लिए मुझे क्या करना चाहिए? विभिन्न प्रकार के सड़कों की मुद्रास्फीति को पुन: संग्रह और संभालना जावा धागा संबंध कैसे ग्रहण से java.library.path को सेट करें NSString का आकार कैसे प्राप्त करें जावा में एक सूचक और एक संदर्भ चर के बीच अंतर क्या है? पायथन: एक सूची में वस्तुओं की गिनती करने के लिए एक शब्दकोश का उपयोग करना PHP में रिश्तेदार पथ शामिल है मुख्य ग्वि को अपडेट करने के लिए जावा स्विंगवर्कर धागा मैं कैसे देखूं अगर वाई-फाई एंड्रॉइड पर कनेक्ट है? सभी ब्राउज़रों के लिए jQuery का उपयोग करने वाले स्थानीयस्टॉयर परिवर्तन ईवेंट को कैसे बाँध सकते हैं? कैसे मैं MySQL में विशेष वर्णों से बच सकता हूं? Mysql में डेटा पंक्तियों से नई लाइन वर्ण कैसे निकालें?

जावास्क्रिप्ट: डॉम लोड इवेंट्स, एक्जिक्यूटशन अनुक्रम, और $ (डॉक्यूमेंट) .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 से पहले पढ़ा / निष्पादित किया जा रहा है