2010-11-22 12 views
6

कोई वेब ब्राउज़र किसी वेबपृष्ठ की जावास्क्रिप्ट सामग्री को कैसे प्रबंधित करता है? क्या जावास्क्रिप्ट सामग्री को डीओएम में पार्स किया जा रहा है और फिर प्रस्तुत किया गया है?ब्राउज़र जावास्क्रिप्ट को कैसे संभालते हैं?

मुझे एक विनिर्देश की आवश्यकता नहीं है, लेकिन मुझे यह जानने की जरूरत है कि यह कैसे किया जाता है। कृपया मुझे वेब पेज पर जावास्क्रिप्ट सामग्री को संभालने की पूरी प्रक्रिया बताएं।

उत्तर

28

एक वेब पेज के script वर्गों ब्राउज़र का JavaScript दुभाषिया, जो ब्राउज़र के एक आंतरिक हिस्सा हो सकता है लेकिन आम तौर पर एक अलग मॉड्यूल, कभी कभी भी एक पूरी तरह से अलग परियोजना है द्वारा नियंत्रित किया जाता है (Chrome में V8 उपयोग करता है, आईई JScript उपयोग करता है; फ़ायरफ़ॉक्स स्पाइडरमोन्की का उपयोग करता है; आदि)।

HTML पार्सर एक script तत्व तक पहुँच जाता है, सभी कि पार्सर करता पढ़ सकते हैं और न खत्म होने वाली </script> टैग के माध्यम से पाठ की दुकान (या src विशेषता के माध्यम से संदर्भित फ़ाइल को पुनः प्राप्त) है। फिर, जब तक लेखक ने defer or async attributes का उपयोग नहीं किया है, तब तक सभी HTML पार्सिंग और प्रतिपादन एक डरावनी ठहराव के लिए आता है और HTML पार्सर स्क्रिप्ट टेक्स्ट को जावास्क्रिप्ट दुभाषिया पर हाथ से हटा देता है। जावास्क्रिप्ट दुभाषिया window ऑब्जेक्ट के संदर्भ में जावास्क्रिप्ट कोड का अर्थ देता है, और जब एचटीएमएल पार्सर पर किया जाता है, तो पेज को पार्सिंग और प्रदर्शित करना जारी रख सकता है। यह स्टॉप-सबकुछ-एंड-द-जावास्क्रिप्ट क्यों है, पृष्ठ के कुछ प्रमुख लोग recommend putting scripts at the bottom पृष्ठ को कथित लोड समय में सुधार करने के लिए। इसका अर्थ यह भी है कि script टैग क्रमशः पर संसाधित किए जाते हैं, जो एक स्क्रिप्ट किसी अन्य पर निर्भर होने पर महत्वपूर्ण हो सकता है। यदि defer या async विशेषता का उपयोग किया जाता है, तब तक स्क्रिप्ट निष्पादन को तब तक स्थगित कर दिया जा सकता है जब तक इसका समर्थन करने वाले ब्राउज़र पर। पृष्ठ पर सभी स्क्रिप्ट उसी वैश्विक निष्पादन संदर्भ के भीतर निष्पादित की जाती हैं, वही वैश्विक नामस्थान और स्मृति क्षेत्र साझा करना (और इस प्रकार एक दूसरे के साथ बातचीत कर सकते हैं)।

एक बार पेज पार्स और प्रदान की गई है, घटनाओं की एक किस्म से हो सकता है   — उपयोगकर्ता कुछ क्लिक कर सकते हैं, ब्राउज़र विंडो आकार दिया जा सकता है, माउस तत्वों से अधिक ले जा सकते हैं। script टैग होने के परिणामस्वरूप चलाए गए जावास्क्रिप्ट कोड को घटनाओं के दौरान जावास्क्रिप्ट में एक फ़ंक्शन कॉल करने का अनुरोध करते हुए, इन घटनाओं को "हुक" कर सकते हैं। यह जावास्क्रिप्ट को इंटरैक्टिव होने की अनुमति देता है   — उपयोगकर्ता पृष्ठ पर किसी तत्व पर क्लिक करता है, उदाहरण के लिए, और ब्राउज़र जावास्क्रिप्ट दुभाषिया को बताता है कि इसे जावास्क्रिप्ट कोड में X फ़ंक्शन चलाया जाना चाहिए।

आप ऊपर देख सकते हैं, दो कुछ अलग परिस्थितियाँ होती हैं जिनमें जावा स्क्रिप्ट कोड चलाया जा सकता है देखते हैं: पेज पार्स के दौरान/प्रक्रिया प्रतिपादन (जब एक script तत्व यह है कि defer या async विशेषताओं का उपयोग नहीं करता है शुरू में कार्रवाई की जा रही है) , और पार्सिंग/प्रतिपादन प्रक्रिया (स्थगित स्क्रिप्ट, और किसी ईवेंट के जवाब में चलने वाला कोड) के बाद। पार्सिंग/प्रतिपादन प्रक्रिया के दौरान चल रही जावास्क्रिप्ट document.write फ़ंक्शन के माध्यम से सीधे HTML पार्सर पर सामग्री आउटपुट कर सकती है। पार्सिंग/रेंडरिंग पूर्ण होने के बाद चल रही जावास्क्रिप्ट पूरी तरह से ऐसा नहीं कर सकती है, लेकिन डीओएम के साथ बातचीत करने के लिए बहुत शक्तिशाली DOM HTML API का उपयोग कर सकती है।

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

अनुशंसित पढ़ने:

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