जेवेसक्रिप्ट इम्प्लीमेंटेशन
जेसक्रिप्ट के कोर एससीमैट्रिप्ट इस भाषा के व्याकरण और बुनियादी ऑब्जैक्ट का वर्णन करता है;
DOM वेब पाठ को संभालने के तरीकों और इंटरफेस का वर्णन करता है;
BOM ब्राउज़र के साथ अन्तरक्रिया के तरीकों और इंटरफेस का वर्णन करता है.
एससीमैट्रिप्ट, DOM और BOM
यद्यपि एससीमैट्रिप्ट एक महत्वपूर्ण मानक है, लेकिन यह जेसक्रिप्ट का एकमात्र हिस्सा नहीं है, तथापि, यह एकमात्र मानकीकृत हिस्सा भी नहीं है. वास्तव में, पूर्ण जेसक्रिप्ट इम्प्लीमेंटेशन निम्नलिखित 3 भिन्न हिस्सों से बना है:

एससीमैट्रिप्ट
एससीमैट्रिप्ट किसी विशिष्ट ब्राउज़र से बांधा नहीं है, वास्तव में, यह किसी भी उपयोगकर्ता इनपुट आउटपुट के तरीके का उल्लेख नहीं करता है (यह C जैसी भाषा से भिन्न है, जिसे इस तरह के कार्यों के लिए बाहरी लाइब्रेरी पर निर्भर करना पड़ता है). तो एससीमैट्रिप्ट क्या है? एससीएमए-262 मानक (दूसरा अनुच्छेद) का वर्णन नीचे दिया गया है:
“एससीमैट्रिप्ट विभिन्न प्रकार के होस्ट इनवायरन्ट के लिए कोर के स्क्रिप्ट प्रोग्रामिंग क्षमता प्रदान करता है, इसलिए कोर स्क्रिप्ट भाषा किसी विशिष्ट होस्ट इनवायरन्ट से अलग निर्धारित की जाती है... ...”
वेब ब्राउज़र एसीएमएस्क्रिप्ट के लिए एक होस्ट इनवायरमेंट है, लेकिन यह एकमात्र होस्ट इनवायरमेंट नहीं है। वास्तव में, अनेक अन्य विभिन्न इनवायरमेंट (जैसे कि नोम्बस के स्क्रिप्टइज़ और मैक्रोमीडिया द्वारा फ्लैश और डायरेक्टर MX में साथ-साथ प्रयोग किया जाने वाला एक्शनस्क्रिप्ट) एसीएमएस्क्रिप्ट अभियंत्रण को समाविष्ट कर सकते हैं। तो एसीएमएस्क्रिप्ट ब्राउज़र के बाहर क्या निर्धारित करता है?
सरल रूप से, एसीएमएस्क्रिप्ट निम्नलिखित को परिभाषित करता है:
- ग्रामर
- टाइप
- स्टेटमेंट
- कीवर्ड
- रिज़र्व्ड वर्ड
- ऑपरेटर
- ऑब्जैक्ट
एसीएमएस्क्रिप्ट सिर्फ एक वर्णन है, जो स्क्रिप्ट भाषा के सभी गुण, विधियों और ऑब्जैक्ट को परिभाषित करता है। अन्य भाषाओं को एसीएमएस्क्रिप्ट को फंक्शन के आधार के रूप में अभियंत्रित किया जा सकता है, जैसे कि जेसक्रिप्ट ऐसा ही है:

हर ब्राउज़र के पास अपना अपना एसीएमएस्क्रिप्ट इंटरफेस का अभियंत्रण है, जो फिर विस्तारित होता है, जिसमें डीओएम और बीओएम (अगले चयनों में चर्चा की जाएगी) शामिल है। इसके अलावा, एसीएमएस्क्रिप्ट को अन्य भाषाओं में भी अभियंत्रित और विस्तारित किया गया है, जैसे कि विंडोज़ स्क्रिप्टिंग होस्ट (विंडोज़ स्क्रिप्टिंग होस्ट, WSH) और मैक्रोमीडिया के फ्लैश और डायरेक्टर MX में एक्शनस्क्रिप्ट, जैसे कि नोम्बस के स्क्रिप्टइज़, और मैक्रोमीडिया द्वारा फ्लैश और डायरेक्टर MX में साथ-साथ प्रयोग किया जाने वाला एक्शनस्क्रिप्ट
1. एसीएमएस्क्रिप्ट का संस्करण
एसीएमएस्क्रिप्ट कई विभिन्न संस्करणों में विभाजित है, जो एसीएमए-262 नामक मानक में परिभाषित है। अन्य मानकों के समान, एसीएमए-262 को संपादित और अद्यतन किया जाता है। मुख्य अद्यतन के बाद, एक नए मानक का संस्करण जारी किया जाता है। सबसे नया एसीएमए-262 का संस्करण 5.1 है, जो 2011 में जून में जारी किया गया था।
एसीएमए-262 का पहला संस्करण नेटस्केप के जेसक्रिप्ट 1.1 के समान है, लेकिन इसमें ब्राउज़र से संबंधित सभी कोडों को हटा दिया गया है, इसके अलावा कुछ छोटे से समायोजन भी किए गए हैं। पहले, एसीएमए-262 ने यूनिकोड मानक के समर्थन की मांग की (बहुभाषी समर्थन के लिए)। दूसरी, इसने ऑब्जैक्ट को प्लेटफॉर्म निरपेक्ष करने की मांग की (नेटस्केप के जेसक्रिप्ट 1.1 में ऑब्जैक्ट के विभिन्न प्लेटफॉर्म निर्भर अभियंत्रण है, जैसे कि डेट ऑब्जैक्ट, जो प्लेटफॉर्म पर निर्भर है)। यही कारण है कि जेसक्रिप्ट 1.1 और 1.2 एसीएमए-262 के पहले संस्करण के मानक के अनुसार नहीं थे।
ECMA-262 的第二版大部分更新本质上是编辑性的。这次标准的更新是为了与 ISO/IEC-16262 的严格一致,也并没有特别添加、更改和删除内容。ECMAScript 一般不会遵守第二版。
ECMA-262 第三版是该标准第一次真正的更新。它提供了对字符串处理、错误定义和数值输出的更新。同时,它还增加了正则表达式、新的控制语句、try...catch 异常处理的支持,以及一些为使标准国际化而做的小改动。一般来说,它标志着 ECMAScript 成为一种真正的编程语言。
2. 何谓 ECMAScript 符合性
在 ECMA-262 中,ECMAScript 符合性(conformance)有明确的定义。一个脚本语言必须满足以下四项基本原则:
- 符合的实现必须按照 ECMA-262 中所描述的支持所有的“类型、值、对象、属性、函数和程序语言及语义”(ECMA-262,第一页)
- 符合的实现必须支持 Unicode 字符标准(UCS)
- 符合的实现可以增加没有在 ECMA-262 中指定的“额外类型、值、对象、属性和函数”。ECMA-262 将这些增加描述为规范中未给定的新对象或对象的新属性
- समर्थन वाले कार्यान्वयन 'कार्यक्रम और रेगुलर अभिव्यक्ति व्याकरण' (अर्थात बारंबार अंतर्निहित रेगुलर अभिव्यक्ति समर्थन को प्रतिस्थापित करने या विस्तार करने के लिए) को प्रदान कर सकते हैं।
सभी ईसीमैस्क्रिप्ट कार्यान्वयन को ऊपरोक्त मानक के अनुसार होना चाहिए।
3. वेब ब्राउज़र में ईसीमैस्क्रिप्ट समर्थन
जेसक्रिप्ट 1.1 सहित नेटस्केप नेविगेटर 3.0 1996 में जारी किया गया। फिर, जेसक्रिप्ट 1.1 नियमावल एक नई मानक के रूप में ईएमसीए को प्रस्तुत किया गया। जेसक्रिप्ट के होमिकल लोकप्रियता के साथ, नेटस्केप बहुत खुशी से 1.2 संस्करण के विकास को शुरू कर दिया। लेकिन एक समस्या थी, ईसीएमए नेटस्केप के प्रस्ताव को स्वीकार नहीं कर लिया। नेटस्केप नेविगेटर 3.0 के जारी किए जाने के कुछ ही समय बाद, माइक्रोसॉफ्ट ने आईई 3.0 को जारी किया। इस संस्करण के आईई में JScript 1.0 (माइक्रोसॉफ्ट के अपने जेसक्रिप्ट के नाम) का होना था, जो मूल रूप से जेसक्रिप्ट 1.1 के साथ तुलना किया जाना था। फिर, दस्तावेज़ों की अभावगति और कुछ अनैतिक दोहराव विशेषताओं के कारण, JScript 1.0 जेसक्रिप्ट 1.1 के स्तर से बहुत कम था।
ECMA-262 पहली संस्करण के अंतिम रूप में तैयार होने से पहले, JavaScript 1.2 के साथ Netscape Navigator 4.0 का जारी करना 1997 में हुआ था, उस वर्ष के अंत में, ECMA-262 मानक स्वीकार और मानकीकृत किया गया। इसलिए JavaScript 1.2 ECMAScript के पहले संस्करण के साथ समानता नहीं रखता, हालांकि ECMAScript जैसा कि कहा जाता है कि यह JavaScript 1.1 के आधार पर होना चाहिए।
JScript का अगला कदम IE 4.0 में JScript 3.0 (2.0 संस्करण IIS 3.0 के साथ जारी किया गया था, लेकिन इसे ब्राउज़र में नहीं शामिल किया गया) में था। Microsoft ने जानकारी दी कि JScript 3.0 दुनिया की पहली वास्तविक ECMA मानक की भाषा है। और उस समय, ECMA-262 अंतिम रूप में तैयार नहीं हुआ था, इसलिए JScript 3.0 भी JavaScript 1.2 के समान भाग्य का शिकार हुआ - यह अंतिम ECMAScript मानक के साथ तालमेल नहीं कर पाया।
Netscape ने Netscape Navigator 4.06 में अपने JavaScript को अपग्रेड किया। JavaScript 1.3 ने Netscape को अंततः ECMAScript पहली संस्करण के साथ पूरी तरह से समानता प्राप्त की। Netscape ने Unicode मानक के समर्थन को जोड़ा और सभी ऑब्जैक्ट को JavaScript 1.2 में परिचय दिए गए नए विशेषताओं को बनाए रखते हुए प्लेटफॉर्म निरपेक्ष बनाया।
जब Netscape अपना स्रोत कोड Mozilla परियोजना के रूप में सार्वजनिक कर दिया, तब JavaScript 1.4 को Netscape Navigator 5.0 में घुसाने की योजना थी। हालांकि, एक अधिकांश निर्णय - Netscape के कोड को पूरी तरह से नए से डिजाइन करना, इस काम को बरबाद कर दिया। JavaScript 1.4 केवल Netscape Enterprise Server के सर्वर साइड स्क्रिप्ट भाषा के रूप में जारी किया गया और बाद में यह ब्राउज़र में नहीं घुसाया गया।
अब, सभी प्रमुख वेब ब्राउज़र ECMA-262 तीसरी संस्करण का पालन करते हैं।
नीचे दिए गए तालिका में अधिकांश लोकप्रिय Web ब्राउज़रों में ECMAScript समर्थन को दर्शाया गया है:
ब्राउज़र | डॉम संगतता |
---|---|
Netscape Navigator 2.0 | - |
Netscape Navigator 3.0 | - |
Netscape Navigator 4.0 - 4.05 | - |
Netscape Navigator 4.06 - 4.79 | संस्करण 1 |
नेटस्केप 6.0+ (मोजिला 0.6.0+) | संस्करण 3 |
Internet Explorer 3.0 | - |
Internet Explorer 4.0 | - |
Internet Explorer 5.0 | संस्करण 1 |
Internet Explorer 5.5+ | संस्करण 3 |
Opera 6.0 - 7.1 | संस्करण 2 |
Opera 7.2+ | संस्करण 3 |
स्फाइरी 1.0+/कॉनक्वेरर ~ 2.0+ | संस्करण 3 |
DOM
DOM (Document Object Model) HTML और XML के लिए एक एप्लीकेशन इंटरफेस (API) है। DOM पूरे पृष्ठ को नोड श्रेणी से बनी डॉक्यूमेंट के रूप में विकसित करेगा। HTML या XML पृष्ठ का प्रत्येक हिस्सा एक नोड के उपज है। नीचे दिए गए HTML पृष्ठ को ध्यान में रखें:
<html> <head> <title>Sample Page</title> </head> <body> <p>hello world!</p> </body> </html>
इस कोड को DOM के द्वारा एक नोड तालिका चित्र के रूप में ड्रा किया जा सकता है:

DOM द्वारा एक गणनीय रूप से डॉक्यूमेंट को प्रस्तुत करके, डेवलपर्स को डॉक्यूमेंट के सामग्री और संरचना पर अभूतपूर्व नियंत्रण प्राप्त होता है। DOM API के द्वारा नोडों को आसानी से मिटाया, जोड़ा और प्रतिस्थापित किया जा सकता है。
1. DOM क्यों अनिवार्य है
IE 4.0 और Netscape Navigator 4.0 से आरंभ होकर विभिन्न रूपों के डायनेमिक HTML (DHTML) को समर्थन करने के बाद, डेवलपर्स पहली बार इसके आकार और सामग्री को बदलने की क्षमता प्राप्त कर पाएं, बिना कि वेब पृष्ठ को पुनः लोड करने की आवश्यकता हो। यह Web तकनीक का एक बड़ा उछाल है, लेकिन इससे बड़ी समस्याएँ भी उत्पन्न हुईं। Netscape और माइक्रोसॉफ्ट दोनों ने अपने अपने DHTML को विकसित किया, जिससे Web डेवलपर्स को एक ही HTML पृष्ठ लिखकर सभी ब्राउज़रों में उपलब्ध कराने का समय समाप्त हो गया।
उद्योग ने निश्चय किया है कि वेब के पारस्परिकता को बनाए रखने के लिए कुछ करना आवश्यक है, वे चिंता करते हैं कि अगर Netscape और माइक्रोसॉफ्ट कंपनी को इस तरह छोड़ दिया जाए, वेब दो स्वतंत्र हिस्सों में विभाजित हो जाएगा, प्रत्येक हिस्सा केवल एक विशिष्ट ब्राउज़र के लिए ही उपयोगी होगा। इसलिए, वेब संचार मानकों को निर्धारित करने के लिए जिम्मेदार समूह W3C (World Wide Web Consortium) ने DOM (Document Object Model) को विकसित करना शुरू किया।
2. DOM के विभिन्न स्तर
डोम लेवल 1 को डब्ल्यू3सी (डब्ल्यूडब्ल्यूसी) ने 1998 में अक्टूबर में प्रस्तावित किया था। इसे दो मॉड्यूलों में बनाया गया था, यानी डोम कोर और डोम एचटीएमएल। पहला मॉड्यूल एक्सएमएल के आधार पर दस्तावेज की संरचना के रूप में एक चित्र उपलब्ध कराता है, ताकि दस्तावेज के किसी भी हिस्से को अद्यतन करने और संचालन करने में सहायता मिले; दूसरा मॉड्यूल डोम कोर को एचटीएमएल विशेष वस्तुओं और विधियों के साथ विस्तारित करता है।
ध्यान दें, डोम केवल जावास्क्रिप्ट के लिए नहीं है, वास्तव में कई अन्य भाषाओं ने इसको लागू किया है। हालांकि, वेब ब्राउज़रों में डोम को एससीएमएस (एक्सीमा) से लागू किया गया है, जो अब जावास्क्रिप्ट भाषा का एक बड़ा हिस्सा है।
डोम लेवल 1 एक लक्ष्य है, यानी दस्तावेज की संरचना का नियोजन करना, डोम लेवल 2 का लक्ष्य बहुत अधिक व्यापक है। मूल डोम को विस्तारित करके माउस और उपयोगकर्ता इंटरफेस इवेंट (डीएचटीएल को इसके लिए बहुत सहायक रहा) और दायरा, भ्रमण (डोम दस्तावेज के विधियों को दोहराना) का समर्थन दिया गया है, और सीएसएस (स्टेकिंग स्टाइल शीट) के समर्थन के लिए ऑब्जेक्ट इंटरफेस को जोड़ा गया है। लेवल 1 में शुरू किये गए मूल डोम कोर को एक्सएमएल नामस्पेस के समर्थन के लिए भी विस्तारित किया गया है。
डोम लेवल 2 में कई नए डोम मॉड्यूलों को शामिल किया गया है, ताकि नए इंटरफेस टाइप का संचालन किया जा सके:
- डोम दृश्य - दस्तावेज के विभिन्न दृश्यों (यानी सीएसएस स्टाइलिंग से पहले और सीएसएस स्टाइलिंग के बाद) का वर्णन
- डोम इवेंट - इवेंट का वर्णन करने वाले इंटरफेस
- डोम स्टाइल - सीएसएस आधारित स्टाइल का संचालन करने वाले इंटरफेस का वर्णन
- डोम भ्रमण और दायरा - दस्तावेज ट्री का भ्रमण और संचालन करने वाले इंटरफेस का वर्णन
डोम लेवल 3 में एक समान तरीके से दस्तावेज को लोड करने और रखने के तरीकों (जो नए मॉड्यूल डोम लोड एंड सेव के रूप में शामिल है) और दस्तावेज की जांच (डोम वैलिडेशन) के तरीकों को शामिल करके डोम को और विस्तारित किया गया है। लेवल 3 में, डोम कोर को सभी एक्सएमएल 1.0 विशेषताओं का समर्थन देने के लिए विस्तारित किया गया है, जिसमें एक्सएमएल इनफोसेट, एक्सपच और एक्सएमएल बेस शामिल हैं。
डोम की सीखने के दौरान, किसी ने डोम लेवल 0 का हवाला देना हो सकता है। ध्यान दें, डोम लेवल 0 ऐसा मानक नहीं है, यह सिर्फ डोम के एक ऐतिहासिक संदर्भ है (डोम लेवल 0 का अर्थ है IE 4.0 और नेटस्केप नेविगेटर 4.0 में समर्थित आरंभिक डीएचटीएल)
3. अन्य डोम
डोम कोर और डोम एचटीएमएल के अलावा, कई अन्य भाषाएँ अपने डोम मानकों को जारी कर चुकी हैं। ये सभी भाषाएँ एक्सएमएल पर आधारित हैं, हर डोम को उस भाषा के लिए विशिष्ट विधियों और इंटरफेस जोड़ते हैं:
- स्केलेबल वेक्टर लैंग्वेज (SVG) 1.0
- डिजिटल मार्कअप लैंग्वेज (MathML) 1.0
- सिंक्रोनस मल्टीमीडिया इंटरग्रेशन लैंग्वेज (SMIL)
टिप्पणी:अगर आप अधिक जानकारी सीखना चाहते हैं, कृपया CodeW3C के SMIL शिक्षण 和 SVG शिक्षण。
इसके अलावा, अन्य भाषाओं ने अपने डॉम के लिए अपनी अभियोजना भी विकसित की है, जैसे मोजिला के XML यूज़र इंटरफ़ेस लैंग्वेज (XUL)। हालांकि, केवल उपरोक्त भाषाएं W3C के सिफारिशित मानक हैं。
4. वेब ब्राउज़रों में डॉम समर्थन
डॉम, वेब ब्राउज़रों द्वारा लागू किए जाने से पहले ही एक मानक बन गया था। आईई ने पहली बार डॉम का प्रयास 5.0 संस्करण में किया, लेकिन वास्तव में 5.5 संस्करण के बाद से ही वास्तविक डॉम समर्थन प्राप्त हुआ, आईई 5.5 ने डॉम स्तर 1 को पूरा किया। उसके बाद से, आईई ने नए डॉम फ़ंक्शनों को नहीं जोड़ा।
नेटस्केप ने डॉम समर्थन को तक 6 (मोजिला 0.6.0) तक जोड़ा। अब, मोजिला डॉम के सबसे अच्छे समर्थन के अधिकारी है, पूरे स्तर 1, अधिकांश स्तर 2 और कुछ स्तर 3 को पूरा करता है (मोजिला डेवलपर ग्रुप का लक्ष्य, 100% मानक समर्थन वाला ब्राउज़र बनाना है, उनका काम उनके लिए राज़ी करने वाला रहा है)。
ऑपेरा तक 7.0 संस्करण तक डॉम समर्थन जोड़ा, सफाइरी ने भी अधिकांश डॉम स्तर 1 को पूरा किया। वे लगभग आईई 5.5 के बराबर हैं, कुछ स्थितियों में, यहां तक कि आईई 5.5 से अधिक। हालांकि, डॉम के समर्थन के लिए, सभी ब्राउज़र मोजिला से बहुत कम समर्थन करते हैं। नीचे दिए गए तालिका में, सामान्य ब्राउज़रों के डॉम समर्थन को दिखाया गया है。
ब्राउज़र | डॉम संगतता |
---|---|
नेटस्केप नेविगेटर 1.0 - 4.x | - |
नेटस्केप 6.0+ (मोजिला 0.6.0+) | स्तर 1, स्तर 2, स्तर 3 (कुछ हिस्से में) |
आईई 2.0 - 4.x | - |
आईई 5.0 | स्तर 1 (न्यूनतम) |
आईई 5.5+ | स्तर 1 (बहुतसे सभी में से) |
ऑपेरा 1.0 - 6.0 | - |
ऑपेरा 7.0+ | स्तर 1 (बहुतसे सभी में से) स्तर 2 (कुछ हिस्से में) |
स्फाइरी 1.0+/कॉनक्वेरर ~ 2.0+ | स्तर 1 |
टिप्पणी:यदि डॉम के ज्ञान को आगे अध्ययन करना चाहते हैं, कृपया CodeW3C के HTML DOM शिक्षण 和 XML DOM शिक्षण。
BOM
IE 3.0 和 Netscape Navigator 3.0 提供了一种特性 - BOM(浏览器对象模型),可以对浏览器窗口进行访问和操作。使用 BOM,开发者可以移动窗口、改变状态栏中的文本以及执行其他与页面内容不直接相关的动作。使 BOM 独树一帜且又常常令人怀疑的地方在于,它只是 JavaScript 的一个部分,没有任何相关的标准。
BOM 主要处理浏览器窗口和框架,不过通常浏览器特定的 JavaScript 扩展都被看做 BOM 的一部分。这些扩展包括:
- 弹出新的浏览器窗口
- 移动、关闭浏览器窗口以及调整窗口大小
- 提供 Web 浏览器详细信息的定位对象
- 提供用户屏幕分辨率详细信息的屏幕对象
- 对 cookie 的支持
- IE 扩展了 BOM,加入了 ActiveXObject 类,可以通过 JavaScript 实例化 ActiveX 对象
由于没有相关的 BOM 标准,每种浏览器都有自己的 BOM 实现。有一些事实上的标准,如具有一个窗口对象和一个导航对象,不过每种浏览器可以为这些对象或其他对象定义自己的属性和方法。