क्या HTML5 HTML टिप्पणी के लिए मानक बदलता है?


131

हाल ही में मैंने पाया है कि संभवतः, HTML5 में टिप्पणी करने का एक नया तरीका है।

<!-- -->मेरे द्वारा पढ़ी गई सामान्य बहु-पंक्ति टिप्पणी के बजाय , मैंने सोचा कि मैंने देखा कि मेरे आईडीई ने नियमित रूप से <!div >टिप्पणी की। इसलिए मैंने इसका परीक्षण किया, और मेरे आश्चर्यचकित क्रोम ने उस टैग पर टिप्पणी की। इसने केवल टैग और div की सामग्री के बारे में टिप्पणी की, इसलिए मुझे <!/div>अन्य divs को बंद करने से बचने के लिए करीब से टिप्पणी करनी पड़ी।

मैंने एक और परीक्षण किया और ऐसा प्रतीत होता है कि आम तौर पर किसी भी टैग के उद्घाटन के सामने विस्मयादिबोधक चिह्न लगाते हुए, यह प्रतीक <, उस टैग को टिप्पणी करता है।

क्या यह वास्तव में नया है? क्या यह बुरा अभ्यास है? यह वास्तव में बहुत सुविधाजनक है, लेकिन क्या यह अभी तक व्यावहारिक है (यदि नया नहीं है)?

अतिरिक्त विवरण संपादित करें: हालाँकि इस विशेष सिंटैक्स की एक सिंटैक्स त्रुटि या गलत व्याख्या एक अच्छा कारण है, कैसे क्रोम वास्तव में उन्हें पूर्ण टिप्पणियों के रूप में प्रस्तुत करता है?

कोड के रूप में लिखा है :

<!div displayed> some text here that is still displayed <!/div>

और फिर इसे निम्न प्रकार से प्रस्तुत किया जाता है :

<!--div displayed--> some text here that is still displayed <!--/div-->

19
अधिक संभावना है कि यह केवल एक सिंटैक्स त्रुटि और / या बकवास टैग है और इसलिए इसे अनदेखा किया गया है।
deceze

@ डिसेज़ मैं कुछ हद तक उम्मीद करता था कि चूंकि ब्राउज़र कम सख्त नियमों के अनुसार एचटीएमएल को कैसे प्रस्तुत करते हैं, इस बात से प्रभावित हो सकते हैं।
एंड्रयू

1
@ Laine-एंड्रयू क्या IDE करता है? चयनित उत्तर के अनुसार, हम इसे एक मुद्दे के रूप में रिपोर्ट कर सकते हैं (या इसे ठीक कर सकते हैं यदि खुला स्रोत है)।
डेरेकसन

1
@ डेरेकसनिट ने आधिकारिक जवाब देने के बाद मेरी आईडीई को दोगुना कर दिया, यह सुनिश्चित करने के लिए कि मेरी आँखें मुझे धोखा नहीं दे रही थीं। ऐसा हुआ कि यह वास्तव में टिप्पणी नहीं थी, लेकिन नियमित पाठ रंग था जो समान था। यह सब संयोग से था।
एंड्रयू

जवाबों:


196

HTML5 में टिप्पणियों के लिए कोई नया मानक नहीं है। एकमात्र मान्य टिप्पणी वाक्य रचना अभी भी है <!-- -->। से W3C एचटीएमएल 5 की धारा 8.1.6 :

टिप्पणियाँ चार वर्ण अनुक्रम U + 003C LESS-THAN SIGN, U + 0021 EXCLAMATION MARK, U + 002D HYPHEN-MINUS, U + 002D HYPHEN-MINUS ( <!--) से शुरू होनी चाहिए ।

<!SGML DTD मार्कअप है, जो एचटीएमएल 5 का हिस्सा नहीं है में वाक्य रचना का जन्म होता। HTML5 में, यह टिप्पणियों, CDATA अनुभागों और DOCTYPE घोषणा के लिए आरक्षित है। इसलिए कि क्या यह विकल्प बुरा अभ्यास है, इस बात पर निर्भर करता है कि क्या आप (या इससे भी बदतर, निर्भरता) अप्रचलित मार्कअप के उपयोग को बुरा व्यवहार मानते हैं।

Validator.nu आपके पास "बोगस टिप्पणी" है। - जिसका अर्थ है कि यह एक टिप्पणी की तरह व्यवहार किया जाता है, भले ही यह एक वैध टिप्पणी नहीं है। यह संभवतः पूर्व-HTML5 के साथ पिछड़ी संगतता के लिए है, जो SGML- आधारित था, और मार्कअप घोषणाएँ थीं <!FOO>, जिन्होंने फॉर्म लिया था , इसलिए मैं इसे नया नहीं कहूंगा। वे कारण जो टिप्पणियों की तरह व्यवहार किए जाते हैं , क्योंकि SGML मार्कअप घोषणाएं विशेष रूप से घोषित किए जाने के लिए नहीं थीं, लेकिन चूंकि वे HTML5 में व्यर्थ हैं (उपरोक्त अपवादों के साथ), जहां तक ​​HTML5 DOM का संबंध है वे टिप्पणियों से अधिक कुछ नहीं हैं

8.2.4 खंड के भीतर निम्नलिखित कदमों से यह निष्कर्ष निकलता है, जो क्रोम अक्षर के अनुसार प्रतीत होता है:

  1. 8.2.4.1 डेटा स्थिति :

    अगले इनपुट वर्ण का उपभोग करें:

    "<" (U + 003C)
    टैग ओपन स्टेट पर स्विच करें।

  2. 8.2.4.8 टैग ओपन स्टेट :

    अगले इनपुट वर्ण का उपभोग करें:

    "!" (U + 0021)
    मार्कअप घोषणा खुले राज्य में स्विच करें।

  3. 8.2.4.45 मार्कअप घोषणा खुले राज्य :

    यदि अगले दो वर्ण दोनों "-" (U + 002D) वर्ण हैं, तो उन दो वर्णों का उपभोग करें, एक टिप्पणी टोकन बनाएं जिसका डेटा खाली स्ट्रिंग है, और टिप्पणी प्रारंभ स्थिति पर स्विच करें।

    अन्यथा, यदि अगले सात वर्ण "DOCTYPE" शब्द के लिए ASCII केस-असंवेदनशील मैच हैं, तो उन वर्णों का उपभोग करें और DOCTYPE स्थिति पर स्विच करें।

    अन्यथा, यदि एक समायोजित वर्तमान नोड है और यह HTML नामस्थान में एक तत्व नहीं है और अगले सात अक्षर स्ट्रिंग के लिए एक केस-संवेदी मैच है "[CDATA [" (एक U के साथ पांच बड़े अक्षर "CDATA" 005B LEFT SQUARE BRACKET चरित्र पहले और बाद में), फिर उन पात्रों का उपभोग करें और CDATA अनुभाग स्थिति पर स्विच करें।

    अन्यथा, यह एक पार्स त्रुटि है। फर्जी टिप्पणी की स्थिति पर स्विच करें। अगला चरित्र जो उपभोग किया जाता है, यदि कोई हो, तो पहला चरित्र है जो टिप्पणी में होगा।

    ध्यान दें कि यह टिप्पणी शुरू करने के लिए स्विच करने के लिए कहता है केवल तभी राज्य का सामना करना पड़ता है जब वर्णों का क्रम होता है <!--, अन्यथा यह एक अपमानजनक टिप्पणी है। यह दर्शाता है कि ऊपर 8.1.6 खंड में क्या कहा गया है।

  4. 8.2.4.44 बोगस टिप्पणी राज्य :

    प्रत्येक वर्ण को पहले ">" (U + 003E) वर्ण या फ़ाइल (EOF) के अंत तक शामिल करें, जो भी पहले आए। एक टिप्पणी टोकन का उत्सर्जन करें, जिसका डेटा उस चरित्र से शुरू होने वाले सभी वर्णों को सम्‍मिलित करता है और उस चरित्र को शामिल करता है जिसके कारण स्थिति मशीन बोगस कमेंट स्‍टेट पर स्विच हो जाती है, अंतिम उपभोग किए गए वर्ण (यानी वर्ण तक) के ठीक पहले और उसके ऊपर वर्ण सहित U + 003E या EOF वर्ण से ठीक पहले), लेकिन U + FFFD REPLACEMENT CHARACTER पात्रों द्वारा प्रतिस्थापित किसी भी U + 0000 NULL वर्ण के साथ। (यदि फ़ाइल (EOF) के अंत तक टिप्पणी शुरू की गई थी, तो टोकन खाली है। इसी तरह, स्ट्रिंग खाली है अगर यह स्ट्रिंग " <!>" द्वारा उत्पन्न किया गया था ।

    सादे अंग्रेजी में, यह प्रश्न में वर्णित के रूप <!div displayed>में <!--div displayed-->और <!/div>में बदल जाता है <!--/div-->

अंतिम नोट पर, आप संभवतः Chrome के समान व्यवहार करने के लिए अन्य HTML5-अनुरूप पार्सर्स से अपेक्षा कर सकते हैं।


11
इस घटना के पीछे आधिकारिक तर्क खोजने के लिए समय निकालने के लिए धन्यवाद। यह काफी हद तक चीजों को साफ करता है और मेरी गलत धारणा को बहुत वैधता देता है।
एंड्रयू

2
यह अजीब है कि HTML5 युक्ति में "अमान्य" सामग्री को संसाधित करने के नियम कैसे हैं। यदि यह अमान्य है, तो इसे बिल्कुल भी संसाधित नहीं किया जाना चाहिए।
आर्टुरो टॉरेस सांचेज़

2
खैर, यह है कि HTML और वेब भाषाओं का उपयोग कैसे किया जाता है - सख्त। अनुचित कोड संरचना का कारण बनता है इसलिए बेहतर गुणवत्ता वाली साइटों के लिए उदारतापूर्वक काम किया जाता है। एक ब्राउज़र जितनी अधिक वेबसाइटें देख सकता है, और गलत सिंटैक्स के साथ सही ढंग से देख सकता है, उनके अंतिम उपयोगकर्ता जितने खुश होंगे। सामान्य वेब-मानक लेखक (ज्यादातर w3 अन्य नहीं), महसूस किया कि ब्राउज़र विक्रेता इसके कारण दिशानिर्देशों का पालन नहीं कर रहे थे। एचटीएमएल 5 आया और केवल डिजाइन को आधिकारिक रूप से अधिक उदार बनाने के विचार पर बनाया गया था।
एंड्रयू

3
@ ArturoTorresSánchez: XHTML ने "अमान्य सामग्री = त्रुटि" दृष्टिकोण की कोशिश की और बुरी तरह विफल रहा। इसके अलावा, नियम मूल रूप से कहता है "इस फर्जी टिप्पणी को पार्स न करें, इसे केवल टिप्पणी के रूप में समझें और अगली मान्य चीज़ को खोजें"। तो आपके दृष्टिकोण के आधार पर, HTML5 या तो वह नहीं करता है जो आप चाहते हैं क्योंकि आप जो भी चूसना चाहते हैं या HTML5 वही करते हैं जो आप चाहते हैं।
स्लीपबेटमैन

1
@ ArturoTorresSánchez: ऐतिहासिक रूप से, HTML सर्वर किसी भी प्रकार के ब्राउज़र में वर्णों के समान अनुक्रम की सेवा करने की अपेक्षा करेंगे; हालाँकि दस्तावेज़ प्रारूप को इस तरह से डिज़ाइन करना संभव है कि पुराने पार्सर दस्तावेज़ों को अलग करने में सक्षम होंगे जो "वैकल्पिक" नई विशेषताओं का उपयोग करते हैं जिन्हें पुराने पार्सर्स को अनदेखा करना चाहिए, दस्तावेज़ जो महत्वपूर्ण नई सुविधाओं का उपयोग करते हैं और उन्हें उन ब्राउज़रों द्वारा अस्वीकार कर दिया जाना चाहिए जो ' t उनका समर्थन करें, और ऐसे दस्तावेज़ जो सीधे सादे अमान्य हैं, ऐसी बात HTML के साथ उसके प्रारंभिक वर्षों के दौरान नहीं की गई थी।
सुपरकैट

12

मुझे नहीं लगता कि <!मार्कअप घोषणाओं के लिए खड़े होने के बाद से यह एक अच्छी आदत है<!DOCTYPE । इस प्रकार आपको लगता है कि यह टिप्पणी की गई है (ठीक है ... ब्राउज़र इसकी व्याख्या करने की कोशिश करेगा)।

यहां तक ​​कि अगर यह प्रकट नहीं होता है, तो यह HTML कोड टिप्पणी करने के लिए सही वाक्यविन्यास नहीं लगता है।


हालाँकि यह सच हो सकता है, कैसे क्रोम वास्तव में उन टैग को टिप्पणी करता है, लेकिन अब सिद्धांत है।
एंड्रयू

4
सुझाव (मुझे यकीन नहीं है, बस अनुमान लगा रहा है): व्याख्या करने की कोशिश करता है> टिप्पणी नहीं कर सकता?
यवेस लैंग

जो मुझे उचित लगता है।
एंड्रयू

फिर से (आग्रह करने के लिए क्षमा करें), लेकिन ध्यान रखें कि यह सिर्फ एक तर्क है!
यवेस लैंग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.