[html] 중첩 된 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; #IMPLIED-연결된 리소스의 문자 인코딩-
  href % URI; #IMPLIED-연결된 리소스의 URI-
  hreflang % LanguageCode; #IMPLIED-언어 코드-
  % ContentType 유형; #IMPLIED-자문 콘텐츠 유형-
  rel % LinkTypes; #IMPLIED-정방향 링크 유형-
  rev % LinkTypes; #IMPLIED-역방향 링크 유형-
  미디어 % MediaDesc; #IMPLIED-이러한 미디어에서 렌더링하는 경우-
>


답변

할 수 없습니다. -->항상 기존 HTML 주석을 끝냅니다.


답변

주석이 포함 된 제어 할 수없는 소스에서 미리 렌더링 된 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대신 as wrapper를 사용할 수 있습니다. 물론 이런 방식으로 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>


답변

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.


답변

일부 편집기에는 텍스트 블록의 기존 주석을 자동으로 처리 할 수있는 주석 달기 / 주석 제거 명령이 있습니다. 예를 들어 Visual Studio는 Ctrl + KC 및 Ctrl + KU를 누를 때이를 수행합니다.


답변

중첩 된 주석을 위조하는 VS 추가 기능은 자동으로 전체 섹션 으로 변환 <!--...--><!~~...~~>다음 주석 처리합니다. 그것은 당신이 그것을 켜고 끌 수 있습니다.

중첩 된 주석