क्या नेस्टेड HTML टिप्पणियाँ संभव हैं?


96

शीर्षक के अनुसार; क्या वैध HTML में नेस्टेड टिप्पणियां करना संभव है? नीचे दिए गए उदाहरण देखें ...

<p>some text</p>

  <!-- comment 1

    <p>commented out html</p>

    <!-- comment 2

      // are nested html comment allowed?

    end of comment 2 -->

    <p>more commented out html</p>

  end of comment 1 -->

<p>some more text</p>

ऐसा प्रतीत होता है, किसी को नहीं पता कि मुझे काम करने के लिए नेस्टेड टिप्पणियां कैसे मिल सकती हैं?


4
... या मुझे नहीं लगता कि यह संभव है, लेकिन शायद मुझसे अधिक अनुभव वाले किसी व्यक्ति को पता होगा!
काजी

यदि HTML में क्या मान्य है, इस बारे में संदेह होने पर, मैं आमतौर पर पीछा करने के लिए कट जाता हूं और मानकों को लोगों तक पहुंचाता हूं। विशेष रूप से, W3C मार्कअप सत्यापन सेवा validator.w3.org पर
Mawg

जवाबों:


103

जब आप कोई टिप्पणी करते हैं, तो "-" को "- -" से बदल दें। जब आप अन-नेस्ट करते हैं, तो प्रक्रिया को उल्टा कर दें। ऐसा नहीं है <!--कि मना किया है लेकिन --

उदाहरण:

<!-- some stuff
<!- - some inner stuff - ->
<!- - a sibling - ->
the footer -->

4
क्या इसका मतलब यह है कि आंतरिक टिप्पणी अब उचित टिप्पणी नहीं है?
एस.लॉट

10
हाँ, HTML और XML <-! आप अपने स्वयं के कोड में क्या कर सकते हैं एक टिप्पणी तत्व को परिभाषित करते हैं और पार्सिंग के दौरान इसे सक्रिय रूप से अनदेखा करते हैं।
आरोन दिगुल्ला

1
ध्यान दें कि आप बदलना चाहिए --साथ - - भीतरी (नेस्टेड) टिप्पणी के लिए
इबोसी

3
यदि आप "-" को "-" में बदलते हैं, तो यह अब एक टिप्पणी नहीं है। एक तरह से लिए चारों ओर यह एक समाधान है, लेकिन चारों ओर एक तरीका नहीं है, आप भी उपयोग कर सकते हैं "<%% - - अपनी टिप्पणी>।
अनंत सिंह

यह कैसे उत्कीर्ण किया गया और सर्वश्रेष्ठ उत्तर के रूप में स्वीकार किया गया? यह भी काम नहीं करता है! Geesh। कृपया नीचे दवे लैंड की व्याख्या पढ़ें ।
जॉन ई

97

TL; DR : दुर्भाग्य से, नहीं, यह संभव नहीं है (और कभी नहीं होगा)।

संक्षिप्त जवाब:

एक HTML टिप्पणी काफी नहीं है कि कई लोग सोचते हैं कि यह क्या है। HTML SGML का एक रूप है, जिसमें डबल-डैश ( --…  --) के जोड़े द्वारा टिप्पणियों को सीमांकित किया जाता है ।

इस प्रकार, किसी प्रारंभ कोष्ठक (के बाद विस्मयादिबोधक बिंदु के साथ कोण कोष्ठक की एक जोड़ी के अंदर एक डबल डैश की जोड़ी <! ---- >) एक टिप्पणी है। युक्ति यह कहती है कि मैं इससे बेहतर कर सकता हूं: http://www.w3.org/TR/html4/intro/sgmltut.html##-3-3.4

यही कारण है कि इस तरह की टिप्पणियां (जो हम सभी को एक बार या किसी अन्य की संभावना है) एक बुरा विचार है:

<! ------------------ हेगड़े कीड़े यहाँ -------------------- ->

सच्चाई: मैं आपको यह बताने में बहुत आलसी हूं कि उपरोक्त टैग प्रदूषण द्वारा कितनी टिप्पणियों का प्रतिनिधित्व किया जाता है, लेकिन यह कम से कम 10 है।

मुझे कम आलसी मिला: इस तथाकथित "टिप्पणी" में वास्तव में 10 टिप्पणियां, किसी भी टिप्पणी के बाहर तीन शब्द (यानी, बस एसजीएमएल खराब हैं), और एक टिप्पणी की शुरुआत जो समाप्त नहीं हुई है। यह एक वास्तविक गड़बड़ है:

<!--1 ----2 ----3 ----4 ----5--
हेडर यहाँ है
--6 ----7 ----8 ----9 ----10-- -->

बेशक, यह बहुत सरल नहीं है , क्योंकि प्रत्येक ब्राउज़र अंतर की व्याख्या करने के लिए कैसे चुनता है, इस अंतर के कारण।

यहाँ एक उत्कृष्ट लेख है जो इसे समझाता है:

    http://weblog.200ok.com.au/2008/01/dashing-into-trouble-why-html-comments.html

लंबा जवाब: हमें गलत क्यों लगता है

हम में से अधिकांश जो HTML के साथ बड़े हुए (SGML में इसे रेखांकित किए बिना) यह विश्वास करने के लिए आया है कि स्ट्रिंग <!--एक टिप्पणी शुरू करती है, और स्ट्रिंग -->एक टिप्पणी को समाप्त करती है।

वास्तव में, <!और >अपने HTML दस्तावेज़ के भीतर एक SGML घोषणा को परिसीमित करें, जैसे कि DOCTYPE घोषणा जो हम सभी अपने पृष्ठों के शीर्ष पर देखते हैं। एसजीएमएल घोषणा के भीतर , टिप्पणियों को डबल-डैश द्वारा सीमांकित किया जाता है। इस प्रकार, HTML टिप्पणी

<! - यह एक टिप्पणी है ->

हम में से अधिकांश का मानना ​​है कि इस तरह से पार्स किया गया <!-- this is a comment -->है वास्तव में इस तरह से पार्स किया गया है
<!-- this is a comment -->:। यह एक एसजीएमएल घोषणा है जो एक टिप्पणी के अलावा खाली है।

क्योंकि HTML SGML का एक रूप है, यह "टिप्पणी-भीतर-एक-घोषणा" एक HTML टिप्पणी के रूप में कार्य करता है।

रुचि से बाहर, यहाँ शुद्ध एसजीएमएल का एक हिस्सा है जो टिप्पणियों को कार्य करने के रूप में दिखाता है जैसा कि वे एसजीएमएल में थे: इस विशेषता सूची की परिभाषा में प्रत्येक पंक्ति पर एक टिप्पणी है:

<! लिंक लिंक
  % Attrs; -% coreattrs,% i18n,% घटनाएँ -
  चारसेट% चारसेट; #IMPLIED - लिंक किए गए संसाधन की चार-एन्कोडिंग -
  href% URI; #IMPLIED - लिंक्ड संसाधन के लिए URI -
  hreflang% LanguageCode; #IMPLIED - भाषा कोड -
  % ContentType टाइप करें; #IMPLIED - सलाहकार सामग्री प्रकार -
  rel% LinkTypes; #IMPLIED - आगे लिंक प्रकार -
  % LinkTypes को संशोधित करें; #IMPLIED - रिवर्स लिंक प्रकार -
  मीडिया% MediaDesc; # मीडिया - इन मीडिया पर प्रतिपादन के लिए -
>

1
दिलचस्प। मुझे आश्चर्य है कि यह अभी भी html5 पार्सिंग का सच है।
Kzqai

1
दुर्भाग्य से, हाँ, यह अभी भी सच है, क्योंकि यह अंतर्निहित एसजीएमएल कमियों का हिस्सा है, जिस पर एचटीएमएल 5 सहित सभी एचटीएमएल आधारित हैं। इसे बदलना सभी के लिए असंभव है।
डेव लैंड

8

यह नहीं किया जा सकता है। -->हमेशा एक मौजूदा HTML टिप्पणी समाप्त होगी।


4
अन्य प्रोग्रामिंग भाषाएं जैसे LUA इसे अनुमति देती हैं। == [[और == [१] दो अलग-अलग टिप्पणी ब्लॉक की शुरुआत है। मुझे कोई कारण नहीं लगता कि किसी दिन HTML एक ही काम नहीं कर सकता था।
जॉन ktejik

7

यदि आप वास्तव में HTML के कुछ टुकड़े के साथ फंस गए हैं - कुछ बेकाबू स्रोत पर प्री-रेंडर किए गए - जिसमें टिप्पणियां शामिल हैं, और आपको यह सुनिश्चित करने की आवश्यकता है कि इसमें से कोई भी आपके पेज पर प्रदान नहीं किया गया है, तो आप इसे हमेशा scriptनीचे दिए गए टैग के साथ लपेट सकते हैं, केवल एक चीज है, आप scriptइस तरह से टैग टिप्पणी नहीं कर सकते ।

<p>some text</p>

<!-- multiline "comment" below using script type="text/html" -->
<script type="text/html">

  <p>commented out html</p>

  <!-- comment 2

      // are nested html comment allowed?

    end of comment 2 -->

  <p>more commented out html</p>

</script>

<p>some more text</p>

यदि आपको scriptटैग्स पर टिप्पणी करने की आवश्यकता है , तो आप textareaइसके बजाय एक आवरण के रूप में उपयोग कर सकते हैं , बेशक यह इस तरह से कर रहा है, आप textareaटैग को टिप्पणी नहीं कर सकते ।

<p>some text</p>

<!-- multiline "comment" below using textarea style="display:none;" -->
<textarea style="display:none;">

  <script>  

    alert("which won't show up..");  

  </script>

  <p>commented out html</p>

  <!-- comment 2

      // are nested html comment allowed?

    end of comment 2 -->

  <p>more commented out html</p>

</textarea>

<p>some more text</p>


1
चतुर! लेकिन क्या करें यदि HTML कोड में पहले से ही <script> टैग ...
Willem

3
@Willem, ने एक अतिरिक्त दृष्टिकोण के साथ उत्तर को अपडेट किया जो आपके परिदृश्य में काम कर सकता है ..
मैथिज फ्लिएस्ट्रा

1
धन्यवाद, यह एक उपन्यास तरीका है। शायद आप जेएस टिप्पणी ब्लॉकों में भी बात लपेट सकते हैं:/* */
विल्म

7

templateटैग का उपयोग करें । सभी टिप्पणी और अन्य HTML को दिखाने से ब्लॉक करने का सबसे तेज़ तरीका।

<template>
    <!-- first paragraph-->
    Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

    <!-- second paragraph-->
    Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</template>

    <!-- third paragraph-->
    Ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.sunt in culpa qui officia deserunt mollit.

<template>तत्व बस कहीं भी नहीं जोड़ा जा सकता। इसका मूल तत्व या तो <body>तत्व होना है या कुछ अन्य का चयन करना है
जॉन ई।

1

कुछ संपादकों के पास कमेंट्स / अनकम्फर्टिंग कमांड्स होते हैं जो टेक्स्ट के ब्लॉक में मौजूदा कमेंट्स को ऑटोमैटिकली हैंडल कर सकते हैं। Visual Studio उदाहरण यह कर रहा है कि जब आप Ctrl + KC और Ctrl + KU दबाते हैं।


मैं कोशिश कर रहा हूँ कि आपने VS2013 में नेस्टेड html टिप्पणियों के लिए Ctrl + KC और Ctrl + KU के लिए क्या कहा, लेकिन दुर्भाग्य से यह इसे संभाल नहीं रहा है।
महदी अलखतीब

1

एक वीएस ऐड-इन उस फेक नेस्टेड कमेंट्स को ऑटोमैटिकली कंवर्ट करता <!--...-->है <!~~...~~>फिर उस पूरे सेक्शन को कमेंट करता है । यह आपको इसे चालू और बंद करने देता है।

नेस्टेड-टिप्पणियां


0

मुझे लगता है कि इसकी अनुमति नहीं है, लेकिन जहां तक ​​मुझे पता है कि यह फ़ायरफ़ॉक्स को छोड़कर अधिकांश प्रमुख ब्राउज़रों में काम करता है।


0

यह प्रयोग करके देखें

<!-- 

यह टिप्पणी की शुरुआत है

<%-- this is another comment --%>

<%-- this is another one --%>

--> टिप्पणियों का अंत।


0

इसे इस्तेमाल करे

<p>some text</p>
<comment> comment 1
<p>commented out html</p>
<!-- comment 2
  // are nested html comment allowed?
end of comment 2 -->
<p>more commented out html</p>
end of comment 1 </comment>
<p>some more text</p>

1
क्या तुम समझा सकते हो? मुझे <comment>HTML में एक कीवर्ड के बारे में पता नहीं था
मावग का कहना है कि
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.