दूसरों ने "कैसे" और उद्धृत युक्ति का उत्तर दिया है। <script/>
बग रिपोर्ट और मेलिंग सूचियों में कई घंटों की खुदाई के बाद "क्यों नहीं " की वास्तविक कहानी है ।
HTML 4
HTML 4 SGML पर आधारित है ।
SGML कुछ है shorttags जैसे <BR//
, <B>text</>
, <B/text/
, या <OL<LI>item</LI</OL>
। एक्सएमएल पहला रूप लेता है, ">" (एसजीएमएल लचीला है) के रूप में समाप्त को फिर से परिभाषित करता है, ताकि यह बन जाए <BR/>
।
हालांकि, HTML को फिर से परिभाषित नहीं किया गया है, इसलिए इसका मतलब <SCRIPT/>
होना चाहिए <SCRIPT>>
।
(हां, '>' सामग्री का हिस्सा होना चाहिए, और टैग अभी भी बंद नहीं है ।)
जाहिर है, यह एक्सएचटीएमएल के साथ असंगत है और कई साइटों को तोड़ देगा (जब तक कि ब्राउज़र इस बारे में देखभाल करने के लिए पर्याप्त परिपक्व थे ), इसलिए किसी ने भी शॉर्टटैग लागू नहीं किया और विनिर्देश उनके खिलाफ सलाह देते हैं ।
प्रभावी रूप से, सभी 'काम कर रहे' स्व-समाप्त टैग तकनीकी रूप से गैर-अनुरूप पार्सर्स पर निषिद्ध एंड टैग के साथ टैग हैं और वास्तव में अमान्य हैं। यह W3C था जो इस हैक के साथ आया था ताकि इसे HTML- संगत बनाकर XHTML को बदलने में मदद मिल सके ।
और <script>
अंत टैग है निषिद्ध नहीं है ।
"स्व-समाप्ति" टैग HTML 4 में एक हैक है और अर्थहीन है।
HTML 5
एचटीएमएल 5 में पांच प्रकार के टैग हैं और केवल 'शून्य' और 'विदेशी' टैग को स्व-बंद करने की अनुमति है ।
क्योंकि <script>
यह शून्य नहीं है (इसमें सामग्री हो सकती है) और विदेशी नहीं है (जैसे मैथ्मेल या एसवीजी), <script>
स्वयं बंद नहीं किया जा सकता है, भले ही आप इसका उपयोग कैसे करें।
लेकिन क्यों? क्या वे इसे विदेशी नहीं मानते, विशेष मामला बनाते हैं, या कुछ और?
HTML 5 का उद्देश्य HTML 4 और XHTML के कार्यान्वयन के साथ पिछड़ा-संगत होना है । यह SGML या XML पर आधारित नहीं है; इसका सिंटैक्स मुख्य रूप से दस्तावेज़ीकरण और कार्यान्वयन को एकजुट करने से संबंधित है। (यही कारण है कि आदि अमान्य HTML4 होने के बावजूद वैध HTML 5 हैं ।)<br/>
<hr/>
स्व-समापन <script>
उन टैगों में से एक है जहां कार्यान्वयन अलग-अलग होते थे। यह क्रोम, सफारी में काम करता था , और ओपेरा ; मेरे ज्ञान के लिए यह इंटरनेट एक्सप्लोरर या फ़ायरफ़ॉक्स में कभी काम नहीं किया।
यह चर्चा की गई थी जब HTML 5 का मसौदा तैयार किया गया था और अस्वीकार कर दिया गया था क्योंकि यह ब्राउज़र संगतता को तोड़ता है । वे वेबपृष्ठ जो स्वयं-बंद स्क्रिप्ट टैग को सही ढंग से प्रस्तुत नहीं कर सकते (यदि सभी में) पुराने ब्राउज़रों में। अन्य प्रस्ताव थे , लेकिन वे संगतता समस्या को हल नहीं कर सकते।
मसौदा जारी होने के बाद, WebKit ने पार्सर को अनुरूपता में अद्यतन किया।
<script>
HTML 4 और XHTML 1 में पिछड़ी संगतता के कारण HTML 5 में स्व-समापन नहीं होता है।
XHTML 1 / XHTML 5
जब वास्तव में एक्सएचटीएमएल के रूप में कार्य किया जाता है, <script/>
तो वास्तव में बंद कर दिया जाता है, अन्य उत्तरों के रूप में ने कहा है।
सिवाय इसके कि ऐनक का कहना है कि इसे HTML के रूप में कार्य करने पर काम करना चाहिए :
XHTML दस्तावेज़ ... को इंटरनेट मीडिया प्रकार "टेक्स्ट / html" [RFC2854] के साथ लेबल किया जा सकता है, क्योंकि वे अधिकांश HTML ब्राउज़र के साथ संगत हैं।
तो क्या हुआ?
लोगों ने मोज़िला को निर्दिष्ट सामग्री हेडर ( सामग्री को सूँघने के रूप में जाना जाता है ) की परवाह किए बिना फ़ायरफ़ॉक्स पार्स दस्तावेजों को एक्सएचटीएमएल के रूप में जाने देने के लिए कहा । यह स्व-समापन स्क्रिप्ट की अनुमति देता था , और सामग्री सूँघना वैसे भी आवश्यक था क्योंकि वेब होस्टर्स सही हेडर की सेवा के लिए पर्याप्त परिपक्व नहीं थे; IE यह अच्छा था ।
यदि पहला ब्राउज़र युद्ध IE 6 के साथ समाप्त नहीं हुआ, तो XHTML सूची में भी हो सकता है। लेकिन यह खत्म हो गया। और IE 6 में XHTML की समस्या है । वास्तव में IE का समर्थन नहीं किया सही MIME प्रकार सब पर , मजबूर कर हर किसी को उपयोग करने के लिए text/html
XHTML के लिए क्योंकि आईई आयोजित प्रमुख बाजार में हिस्सेदारी एक पूरे दशक के लिए।
और यह भी कि सामग्री सूँघना वास्तव में खराब हो सकता है और लोग कह रहे हैं कि इसे रोका जाना चाहिए ।
अंत में, यह पता चला है कि W3C का मतलब XHTML को सूँघने योग्य नहीं था : दस्तावेज़ दोनों HTML और XHTML और Content-Type
नियम हैं। एक कह सकते हैं कि वे "बस हमारी कल्पना का पालन करें" पर दृढ़ थे और जो व्यावहारिक था उसे अनदेखा कर रहे हैं । एक गलती जो जारी रही बाद के XHTML संस्करणों में रही।
वैसे भी, इस निर्णय ने फ़ायरफ़ॉक्स के लिए मामला सुलझा लिया । क्रोम के जन्म से 7 साल पहले की बात है ; कोई अन्य महत्वपूर्ण ब्राउज़र नहीं थे। इस प्रकार यह तय किया गया था।
निम्नलिखित विशिष्टताओं के कारण अकेले doctype को निर्दिष्ट करना XML पार्सिंग को ट्रिगर नहीं करता है।