जैसा कि पहले उत्तर में बताया गया है कि इस व्यवहार को विंडो ऑब्जेक्ट पर नामित पहुंच के रूप में जाना जाता है । का मान name
कुछ तत्वों के लिए विशेषता और मूल्य के id
सभी तत्वों के लिए विशेषता वैश्विक के गुणों के रूप में उपलब्ध कराया जाता है window
वस्तु। इन्हें नामित तत्व के रूप में जाना जाता है। चूंकि window
ब्राउज़र में वैश्विक ऑब्जेक्ट है, प्रत्येक नामित तत्व वैश्विक चर के रूप में सुलभ होगा।
यह मूल रूप से इंटरनेट एक्सप्लोरर द्वारा जोड़ा गया था और अंततः सभी अन्य ब्राउज़रों द्वारा उन साइटों के साथ संगतता के लिए लागू किया गया था जो इस व्यवहार पर निर्भर हैं। दिलचस्प बात यह है कि, गेको (फ़ायरफ़ॉक्स का रेंडरिंग इंजन) ने इसे क्वर्की मोड में ही लागू करने के लिए चुना , जबकि अन्य रेंडरिंग इंजन ने इसे मानक मोड में छोड़ दिया।
हालाँकि, फ़ायरफ़ॉक्स 14 के रूप में, फ़ायरफ़ॉक्स अबwindow
मानक मोड में ऑब्जेक्ट पर नाम एक्सेस का समर्थन करता है । उन्होंने इसे क्यों बदला? पता चलता है कि अभी भी बहुत सारी साइटें हैं जो मानकों मोड में इस कार्यक्षमता पर निर्भर हैं। Microsoft ने एक मार्केटिंग डेमो भी जारी किया, जिसने डेमो को फ़ायरफ़ॉक्स में काम करने से रोक दिया।
वेबकिट ने हाल ही में विपरीत पर विचार किया है , window
ऑब्जेक्ट पर नाम का उपयोग केवल quirks मोड तक पहुंच गया है । उन्होंने गेको के ही तर्क से इसके खिलाफ फैसला किया।
तो ... यह जैसा लगता है कि पागल है यह व्यवहार अब तकनीकी रूप से सभी प्रमुख ब्राउज़रों के नवीनतम संस्करण में मानक मोड में उपयोग करने के लिए सुरक्षित है । लेकिन नामित नाम कुछ सुविधाजनक लग सकता है, इसका उपयोग नहीं किया जाना चाहिए ।
क्यों? इस लेख में बहुत सारे तर्क दिए जा सकते हैं कि वैश्विक चर खराब क्यों हैं । सीधे शब्दों में कहें, अतिरिक्त वैश्विक चर का एक गुच्छा अधिक कीड़े की ओर जाता है। मान लीजिए कि आप गलती से एक का नाम टाइप करते हैं var
और id
एक DOM नोड, SURPRISE टाइप करते हैं !
इसके अतिरिक्त, मानकीकृत होने के बावजूद भी ब्राउज़र की नामित पहुंच के कार्यान्वयन में काफी विसंगतियां हैं।
- IE गलत तरीके से
name
फॉर्म तत्वों (इनपुट, चयन, आदि) के लिए विशेषता के मूल्य को सुलभ बनाता है।
- गेको और वेबकिट गलत तरीके
<a>
से टैग को अपनी name
विशेषता के माध्यम से सुलभ नहीं बनाते हैं ।
- गेको गलत तरीके से एक ही नाम के साथ कई नामित तत्वों को संभालता है (यह एक संदर्भ के बजाय एक एकल नोड का संदर्भ देता है)।
और मुझे यकीन है कि यदि आप किनारे के मामलों में उपयोग किए गए नाम का उपयोग करने की कोशिश कर रहे हैं तो यह अधिक है।
जैसा कि अन्य उत्तरों में बताया गया है document.getElementById
कि इसके द्वारा DOM नोड का संदर्भ प्राप्त करने के लिए उपयोग किया जाता है id
। यदि आपको इसके name
विशेषता उपयोग द्वारा नोड का संदर्भ प्राप्त करने की आवश्यकता है document.querySelectorAll
।
कृपया, कृपया अपनी साइट में नामित पहुँच का उपयोग करके इस समस्या का प्रचार न करें। बहुत से वेब डेवलपर्स ने इस जादुई व्यवहार को ट्रैक करने के लिए समय बर्बाद किया है । हमें वास्तव में कार्रवाई करने की आवश्यकता है और मानकों मोड में एक्सेस एक्सेस को बंद करने के लिए रेंडरिंग इंजन प्राप्त करना होगा। अल्पावधि में यह कुछ साइटों को खराब कर देगा, लेकिन लंबे समय में यह वेब को आगे बढ़ने में मदद करेगा।
यदि आप रुचि रखते हैं, तो मैं इस बारे में अपने ब्लॉग पर और अधिक विस्तार से बात करता हूं - https://www.tjvantoll.com/2012/07/19/dom-element-references-as-global-variables/ ।