programing tip

중첩 된 HTML 주석이 가능합니까?

itbloger 2020. 9. 5. 09:26
반응형

중첩 된 HTML 주석이 가능합니까?


제목에 따라; 유효한 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>

그렇지 않은 것 같습니다. 아무도 중첩 된 주석을 어떻게 작동시킬 수 있는지 알고 있습니까?


주석을 중첩 할 때 "-"를 "--"로 바꾸십시오. 중첩을 해제 할 때 절차를 반대로 수행하십시오. 그것은 아니다 <!--금지된다하지만 --.

예:

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

TL; DR : 안타깝게도 불가능합니다. 불가능합니다.

짧은 답변:

HTML 주석은 많은 사람들이 생각하는 것과 다릅니다. HTML은 주석이 이중 대시 쌍 ( --…  --) 으로 구분되는 SGML의 한 형태입니다 .

따라서 여는 괄호 ( <! ---- >) 뒤에 느낌표가있는 한 쌍의 꺾쇠 괄호 안에있는 이중 대시 쌍은 주석입니다. 사양은 내가 할 수있는 것보다 낫다고 말합니다 : http://www.w3.org/TR/html4/intro/sgmltut.html#h-3.2.4

이것이 바로 다음과 같은 주석 (우리 모두가 한 번 이상 수행했을 가능성이 있음)이 나쁜 생각 인 이유입니다 .

<!------------------- 여기에서 시작되는 헤더 --------------------->

진실 : 위의 태그 오염으로 표현되는 댓글 수를 말하기에는 너무 게으르지 만 적어도 10 개입니다.

나는 덜 게으르다. 소위 "주석"은 실제로 10 개의 주석, 주석 외부에있는 3 개의 단어 (즉, 잘못된 SGML) 및 종료되지 않은 주석의 시작으로 구성됩니다. 정말 엉망입니다.

<!--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을 탐구하지 않고) .

사실, <!그리고 >그러한 우리는 우리의 모든 페이지의 상단에 본 적이 DOCTYPE 선언으로 HTML 문서, 내 SGML 선언을 구분합니다. SGML 선언 에서 주석은 이중 대시로 구분됩니다. 따라서 HTML 주석

<!-이것은 주석입니다->

우리 중 대부분은 이것이 <!-- this is a comment -->실제로 다음과 같이 구문 분석
<!-- this is a comment -->됩니다. 주석을 제외하고는 비어있는 SGML 선언입니다.

HTML은 SGML의 한 형태이므로이 "선언 내 주석"은 HTML 주석으로 작동합니다.

흥미로운 점은 SGML에서 의도 한대로 작동하는 주석을 보여주는 순수 SGML 청크입니다.이 속성 목록 정의에는 각 줄에 주석이 포함되어 있습니다.

<! ATTLIST 링크
  %attrs;                              -- %coreattrs, %i18n, %events --
  charset     %Charset;      #IMPLIED  -- char encoding of linked resource --
  href        %URI;          #IMPLIED  -- URI for linked resource --
  hreflang    %LanguageCode; #IMPLIED  -- language code --
  type        %ContentType;  #IMPLIED  -- advisory content type --
  rel         %LinkTypes;    #IMPLIED  -- forward link types --
  rev         %LinkTypes;    #IMPLIED  -- reverse link types --
  media       %MediaDesc;    #IMPLIED  -- for rendering on these media --
>

It cannot be done. --> will always end an existing HTML comment.


Use template tag. The fastest way to block all the comment and other html from showing up.

<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.

If you're really stuck with some piece of HTML – pre-rendered at some uncontrollable source – which contains comments, and you need to make sure none of it is rendered on your page, you can always wrap it with a script tag like below, only thing is, you can't comment out script tags this way.

<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>

If you need to comment out script tags, you could use a textarea as wrapper instead, off course doing it this way, you can't comment out textarea tags.

<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>


Some editors have commenting/uncommenting commands which can automatically handle existing comments in a block of text. Visual Studio e.g. is doing that when you press Ctrl+KC and Ctrl+KU.


I think it isn't allowed, but as far as I know it works in most of the major browsers except in Firefox.


try using this

<!-- 

this is the start of the comment

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

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

--> end of the comments.


Try this

<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>

A VS add-in that fakes nested comments by automatically converts <!--...--> to <!~~...~~> then comments out that whole section. It lets you toggle it on and off.

nested-comments

참고URL : https://stackoverflow.com/questions/442786/are-nested-html-comments-possible

반응형