DOM के बारे में कुछ स्पष्टीकरण


25

मैं डोम को समझने की कोशिश कर रहा हूं, और हालांकि मुझे इस बात का उचित अंदाजा है कि कुछ ऐसे विचार हैं, जिन्हें मैं अभी ठीक से समझ नहीं पाया हूं। मैं नीचे सूचीबद्ध करूँगा कि मुझे क्या लगता है कि DOM क्या है और मेरे प्रश्न इनलाइन होंगे।

  1. DOM वेब पेज का पूरी तरह से ऑब्जेक्ट-ओरिएंटेड प्रतिनिधित्व है। W3C DOM मानक अधिकांश आधुनिक ब्राउज़रों में कार्यान्वित DOM के आधार बनाता है।

    तो क्या डोम बात करता है कि एक XML / HTML दस्तावेज़ को ऑब्जेक्ट मॉडल के रूप में कैसे दर्शाया जाता है?

  2. DOM यह निर्दिष्ट नहीं करता है कि दस्तावेजों को एक पेड़ या ग्रोव के रूप में लागू किया जाना चाहिए, और न ही यह निर्दिष्ट करता है कि वस्तुओं के बीच संबंधों को कैसे लागू किया जाए।

    दस्तावेज़ को किन अन्य तरीकों से दर्शाया जा सकता है?

  3. जब आप ऐसा कुछ करते हैं -

    document.write('welcome to my home page!');

    दस्तावेज़ ऑब्जेक्ट DOM द्वारा प्रदान किया गया है। लेखन विधियाँ वे इंटरफेस हैं जो DOM द्वारा JavaScript के संपर्क में हैं।

    तो ऑब्जेक्ट्स और इसके तरीकों को DOM पार्सर द्वारा जावास्क्रिप्ट ऑब्जेक्ट्स के रूप में बनाया जाता है और फिर जावास्क्रिप्ट इंजन को प्रस्तुत किया जाता है? या डोम पार्सिंग इंजन के भीतर की वस्तुएं और विधियां अपनी मूल भाषा में हैं? और जावास्क्रिप्ट इंजन के संपर्क में है? यदि ऐसा है, तो जावास्क्रिप्ट से मूल भाषा में अनुवाद करने के लिए क्या जिम्मेदार है?

  4. भाषा बाइंडिंग क्या हैं?

    भाषा बाइंडिंग उस भाषा की मूल वस्तुओं का समूह है जिसमें डोम स्पेसिफिकेशंस के प्रत्येक इंटरफेस को लागू किया जाता है।

    डेवलपर्स डोम स्पेस में IDL (इंटरफ़ेस डेफिनिशन लैंग्वेज) को फॉलो करके अपनी भाषा में DOM से भाषा बाइंडिंग बना सकते हैं।

    तो अगर सी + + में डोम पार्सिंग इंजन को लागू किया जाता है, तो क्या इसका मतलब यह है कि जब आप आईडीएल का अनुसरण करके भाषा बाइंडिंग बनाते हैं, तो आप केवल विशिष्ट भाषा में वस्तुओं का निर्माण कर रहे हैं, यानी सी ++ कि आपका डोम पार्सिंग इंजन के साथ बनाया गया है?


@apsillers यह होना चाहिए था "तो डोम बात करता है कि एक XML / HTML दस्तावेज़ को ऑब्जेक्ट मॉडल के रूप में कैसे दर्शाया जाता है?" मैंने पोस्ट को एडिट किया है।
user1720897

मैं जवाब दूंगा कि मैं टिप्पणियों में क्या कर सकता हूं। 3 और 4 किसी ऐसे व्यक्ति को ले सकते हैं जो वास्तव में उत्तर देने के लिए ब्राउज़र विकसित करता है और मैं उत्तर गणना को प्रभावित नहीं करना चाहता। 1 - ब्राउज़र को दस्तावेज़ की वर्तमान स्थिति की समझ है, आप इसे DOM कह सकते हैं, वैकल्पिक रूप से आप DOM को मानक इंटरफेस कह सकते हैं जो यह उजागर करता है कि आपको दस्तावेज़ की स्थिति को क्वेरी और संशोधित करने की अनुमति देता है।
जॉर्ज मौअर

2 - कथन कार्यान्वयन के बारे में है, न कि प्रतिनिधित्व के बारे में। जब तक मैं गलत नहीं हूँ, '' प्रतिनिधित्व '' एक पेड़ होना है। पर्दे के पीछे का क्रियान्वयन नहीं होता है।
जॉर्ज मौअर

जवाबों:


19

प्रासंगिक विशिष्टताओं और संदर्भों के बारे में मेरी सबसे अच्छी रीडिंग क्या है। (मुझे डीओएल के स्तर और विशेष रूप से उपयोगी लिंक के बारे में मोज़िला का सार मिला ।) मैं दूसरों से सुधार या स्पष्टीकरण को प्रोत्साहित करता हूं।

तो क्या डोम बात करता है कि एक XML / HTML दस्तावेज़ को ऑब्जेक्ट मॉडल के रूप में कैसे दर्शाया जाता है?

हाँ। DOM लेवल 1 विनिर्देश के दो भाग हैं - कोर और HTMLकोर डोम विनिर्देश एक का वर्णन करता है सामान्य डोम है कि किसी भी संरचित दस्तावेज़ प्रतिनिधित्व करने के लिए इस्तेमाल किया जा सकता। एचटीएमएल डोम विनिर्देश का वर्णन HTML दस्तावेज़ विशेष रूप से वर्णन करने के लिए कोर डोम का उपयोग कैसे करें और एचटीएमएल विशेष इंटरफेस भी शामिल है।

DOM यह निर्दिष्ट नहीं करता है कि दस्तावेजों को एक पेड़ या ग्रोव के रूप में लागू किया जाना चाहिए, और न ही यह निर्दिष्ट करता है कि वस्तुओं के बीच संबंधों को कैसे लागू किया जाए। दस्तावेज़ को किन अन्य तरीकों से दर्शाया जा सकता है?

DOM Core यह मानता है कि दस्तावेज़ एक पेड़ है। Nodeइंटरफ़ेस "... पूरे [डोम] के लिए प्राथमिक डेटाप्रकार। यह में एक भी नोड का प्रतिनिधित्व करता है दस्तावेज़ पेड़ ।" Nodeबच्चों, भाई, और माता-पिता के नोड्स (जैसे ,, आदि) तक पहुंचने के लिए कई गुण हैं parentNode, frstChildजो एक पेड़ की संरचना का अर्थ है। आप एक सपाट पेड़ या एक रेखीय वृक्ष (उदाहरण के लिए, एक लिंक्ड सूची) का उपयोग कर सकते हैं, लेकिन यह अभी भी पेड़ का कुछ रूप होने जा रहा है।

जैसा कि जॉर्ज मौयर टिप्पणियों में बताते हैं, शायद आपका मतलब है कि किसी विशेष कार्यान्वयन के अंतर्निहित मॉडल को एक पेड़ होने की आवश्यकता नहीं है। यह बहुत सच है; जब तक आपका कार्यान्वयन DOM विनिर्देशन में वादा की गई कार्यक्षमता प्रदान करता है, आप उस कार्यक्षमता को प्रदान करने के लिए जो भी संरचना पसंद करते हैं, उसका उपयोग कर सकते हैं।

क्या डोम पार्सिंग इंजन के भीतर की वस्तुएं और विधियाँ अपनी मूल भाषा में हैं?

आम तौर पर, हाँ । अधिकांश ब्राउज़रों में, DOM को C जैसी निचले स्तर की भाषा में लागू किया जाता है, और ब्राउज़र जावास्क्रिप्ट वातावरण में बाइंडिंग की आपूर्ति करता है जो वास्तविक अभ्यावेदन में हेरफेर कर सकता है। वास्तव में, यदि आप "जावास्क्रिप्ट में चलती डोम" के प्रश्न को देखते हैं? , आप देखेंगे कि Google एक देशी जावास्क्रिप्ट डोम कार्यान्वयन पर स्विच करने में रुचि रखता है (संभवतः एक C ++ फ़ंक्शन और उस C ++ फ़ंक्शन के लिए डुप्लिकेट जावास्क्रिप्ट आवरण की आवश्यकता से बचने के लिए, संभवतः प्रदर्शन लाभ के लिए भी)।

जावास्क्रिप्ट से मूल भाषा में अनुवाद करने के लिए क्या जिम्मेदार है?

मुझे इस विषय पर थोड़ा खतरा है, लेकिन मेरी समझ यह है कि जब एक जावास्क्रिप्ट डोम बाध्यकारी होता है, तो जावास्क्रिप्ट निष्पादन वातावरण (जो स्वयं सी की तरह निचले स्तर की भाषा में लागू होता है) प्रासंगिक DOM फ़ंक्शन को कॉल करता है। (डोम में हेरफेर करने के लिए C / C ++ में लिखा गया है)।

यदि आप उससे अधिक गहराई में जाना चाहते हैं, तो आपको किसी ऐसे व्यक्ति से बात करनी होगी जो वास्तव में ब्राउज़र बनाता है।

क्या इसका मतलब यह है कि जब आप आईडीएल का अनुसरण करके भाषा बाइंडिंग बनाते हैं, तो आप केवल विशिष्ट भाषा में वस्तुओं का निर्माण कर रहे हैं, यानी सी ++ जो आपके डोम पार्सिंग इंजन के साथ बनाया गया है?

हाँ। DOM का IDL भाषा-अज्ञेयवादी है, जिससे आप इसे किसी भी भाषा में लागू कर सकते हैं। "डोमिंग कार्यान्वयन लेखन" का अर्थ है डोम विनिर्देशों में वर्णित आईडीएल इंटरफेस के अनुरूप कोड लिखना (किसी विशेष भाषा में)।


मेरा मानना ​​है कि बाइंडिंग में दो चीजों को शामिल करना होगा। संदर्भ के माध्यम से देशी रन-टाइम को लागू करना और मूल कार्यान्वयन से घटनाओं को लेने का कोई तरीका। आप वास्तव में देख सकते हैं कि कंसोल में ब्राउज़रों द्वारा आमतौर पर मूल कोड रैपर क्या हैं। उदा। console.log(document.write);या ब्राउज़र में लॉग परम console.log(document.constructor);जोड़ें .toString()जो आपको फ़ंक्शन पाठ नहीं देता है। जरूरी नहीं कि वस्तुएं मूल कोड में एक मिरर के बराबर हों। इसके अलावा, अधिकांश DOM ऑब्जेक्ट गुण वास्तव में संबद्ध व्यवहार के साथ गेटर्स हैं।
एरिक रिपेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.