2010-11-02 9 views
5

ब्राउज़र एचटीएमएल कैसे समझते हैं?एचटीएमएल को संसाधित/समझने के लिए ब्राउज़र का उपयोग करने वाली आंतरिक तंत्र क्या है?

आंतरिक प्रसंस्करण क्या होता है जो आंतरिक रूप से होता है ताकि ब्राउजर उचित रूप से एचटीएमएल को उचित रूप से प्रस्तुत कर सके?

+1

सच जटिल पार्स, मुझे लगता है :) –

+2

विषय बहुत व्यापक मुझे लगता है कि है;) –

+0

हाँ, कोई इस के लिए असली जवाब पता होगा। यह पूछने की तरह है "Google खोज परिणामों में वेबसाइटों को कैसे रैंक करता है?" हमारे पास सिद्धांत हैं, लेकिन कोई निर्णायक उत्तर नहीं है। – RPM1984

उत्तर

11

यह विशेष ब्राउज़र पर निर्भर करता है, लेकिन सामान्य प्रक्रिया कुछ इस तरह चला जाता है:

  1. एचटीएमएल पढ़ें और एक डोम पेड़ में उसे पार्स।
  2. लोड जुड़ा हुआ संसाधनों (स्टाइलशीट, लिपियों, छवियों, मीडिया)
  3. पेज लेआउट (स्थिति, आकार, रंग, फ़ॉन्ट, आदि) की गणना
  4. पेज

आधुनिक ब्राउज़रों में प्रस्तुत, ये ऑपरेशन आंशिक रूप से समानांतर में चलते हैं, जिससे चीजें अपेक्षाकृत अधिक जटिल होती हैं।

यदि आप अधिक जानकारी जानना चाहते हैं, तो आप कम से कम फ़ायरफ़ॉक्स (और अन्य गीको-आधारित ब्राउज़र) और वेबकिट (Google क्रोम और सफारी का आधार) स्रोत स्रोत देख सकते हैं।

+0

क्या ब्राउज़र में एचटीएमएल पार्सर अंतर्निहित होगा? –

+1

@ मल्टीप्लेक्सर - निश्चित रूप से यह होगा .... – Paddy

+0

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

2

यह पहली बार पूछे जाने पर यह एक बड़ा सवाल है।

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

और यह एक व्यापक सूची के पास कहीं भी नहीं है।

उपलब्ध पूर्ण स्रोत कोड के साथ एक अच्छा उदाहरण Gecko है, मोज़िला फ़ायरफ़ॉक्स के पीछे प्रतिपादन इंजन। यह अच्छी तरह से बनाए रखा, तेज़, काफी मानक अनुपालनशील है, और कोड समीक्षकों और हमलावरों के 1000s के रूप में सुरक्षित है इसे बना सकता है।

1

यह वास्तव में मेरा क्षेत्र नहीं है, लेकिन किसी भी भाषा के साथ, कंप्यूटर को इसका विश्लेषण करना है, और इसका आंतरिक प्रतिनिधित्व करना है।

5 से पहले एचटीएमएल के संस्करणों में, प्रत्येक ब्राउज़र ने तय किया कि HTML को स्वयं कैसे पार्स करें। एचटीएमएल 5 से शुरू होने पर, एचटीएमएल स्पेक वास्तव में एचटीएमएल को पार्स करने के तरीके को परिभाषित करता है।

सभी ब्राउज़र अभी तक इसे लागू नहीं करते हैं (संभवतः कोई भी नहीं), लेकिन वेबकिट टीम कम से कम इस पर काम कर रही है, और उनके काम को देखकर, या एचटीएमएल 5 स्पेक, सीखने के लिए शुरू करने के लिए एक अच्छी जगह हो सकती है एचटीएमएल पार्सिंग के बारे में।

+0

प्री -5 एचटीएमएल संस्करणों के लिए भी चश्मा हैं। केवल कुछ ब्राउज़रों ने उनका पालन करने का फैसला किया, जबकि अन्य ने नहीं किया। साथ ही, spec किसी विशेष पार्सिंग एल्गोरिदम या तकनीक को निर्देशित नहीं करता है, यह केवल वाक्यविन्यास को परिभाषित करता है और ब्राउज़र को इसकी व्याख्या कैसे करनी चाहिए। – tdammers

+0

@tdammers: मैं इस धारणा के तहत था कि एचटीएमएल 4 और उसके पहले के चश्मा में एक पार्सर लिखने के लिए विशेष रूप से सहायक होने के लिए आवश्यक विस्तार के स्तर की तरह कुछ भी नहीं था, इसलिए प्रभावी रूप से उन्होंने HTML को पार्स करने का तरीका परिभाषित नहीं किया। (मेरे पास इस पर कोई राय नहीं है, क्योंकि मैंने कभी भी किसी भी चीज़ के लिए एक पार्सर लिखने के करीब कभी नहीं आना है।) –

+0

@ पॉल, आईएमएचओ समस्या अनिवार्य रूप से थी कि एचटीएमएल के किसी भी संशोधन के लिए वास्तव में कोई ब्राउज़र नहीं था । हर ब्राउज़र में quirks है। और DOCTYPE, यदि कोई हो, के आधार पर उन quirks पैच। एचटीएमएल 4 ने खुद को पर्याप्त रूप से निर्दिष्ट किया है। कोई भी परवाह नहीं है। वेब पर एक HTML सत्यापनकर्ता को बड़े पैमाने पर इंस्टॉल और उपयोग करें, फिर निराश न होने की कोशिश करें कि कितनी साइटें पास होंगी। (एसओ में इस पृष्ठ पर 24 एसजीएमएल पार्सिंग त्रुटियां हैं क्योंकि मैं इसे HTML वैलिडेटर एफएफ एक्सटेंशन के अनुसार टाइप करता हूं।) – RBerteig

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

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