태그 보관물: comments

comments

HTML5는 HTML 주석 표준을 변경합니까? 생각 내 IDE가

최근에 HTML5에 새로운 주석 달기 방법이 있음을 발견했습니다.

대신 일반의 <!-- -->나에 대해 읽은 주석 멀티 라인, 나는 생각 내 IDE가 정기적으로 만든 것으로 나타났습니다 <!div >주석을. 그래서 나는 그것을 테스트했고 놀랍게도 크롬이 그 태그를 주석으로 처리했습니다. 그것은 div의 내용이 아닌 태그 주석 처리 했으므로 <!/div>다른 div를 닫지 않도록 가까이 주석을 달아야했습니다.

다른 테스트를 한 결과 일반적으로 태그 열기 앞에 느낌표를 넣으면이 기호 <가 주석 처리됩니다.

이것은 실제로 새로운 것인가? 나쁜 습관입니까? 실제로 매우 편리하지만 아직 실용적이지 않습니까 (새롭지 않은 경우)?

추가 세부 정보 수정 :
이 특정 구문의 구문 오류 또는 잘못된 해석이 좋은 이유이지만 Chrome에서 실제로 전체 주석으로 렌더링 하는 방법은 무엇입니까?

코드는 다음과 같이 작성됩니다 .

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

그리고 다음과 같이 렌더링됩니다 .

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



답변

HTML5에는 주석에 대한 새로운 표준이 없습니다. 유효한 주석 구문은 여전히 ​​유일합니다 <!-- -->. 에서 W3C HTML5의 섹션 8.1.6 :

주석은 4 개의 문자 시퀀스 U + 003C LESS-THAN SIGN, U + 0021 EXCLAMATION MARK, U + 002D HYPHEN-MINUS, U + 002D HYPHEN-MINUS ( <!--)로 시작해야합니다.

<!구문은 HTML5의 일부가 아닌 SGML DTD 마크 업에서 시작됩니다. HTML5에서는 주석, CDATA 섹션 및 DOCTYPE 선언 용으로 예약되어 있습니다. 따라서이 대안이 잘못된 방법인지 여부는 더 이상 사용되지 않는 마크 업의 사용을 나쁜 방법으로 간주하는지 여부에 따라 다릅니다.

Validator.nu는 “Bogus 의견”이있는 것을 호출합니다. — 유효한 주석이 아니더라도 주석처럼 취급됨을 의미합니다. 이것은 아마도 HTML5 이전 버전과 호환되며 SGML 기반이었고 마크 업 선언이 형식을 취 <!FOO>했기 때문에이 새로운 것으로 부르지 않을 것입니다. 그들이 처리하고 그 이유 처럼 SGML 마크 업 선언을하지 렌더링 할 의미가 특별 선언했기 때문에 의견이다, 그러나 의미는 (위의 예외) HTML5에 있기 때문에, 멀리 HTML5 DOM에 관한 한 그들은 없는 댓글 더 이상 아무것도 .

섹션 8.2.4 의 다음 단계는 이 결론으로 ​​이어 지며 Chrome은 편지를 따르는 것으로 보입니다.

  1. 8.2.4.1 데이터 상태 :

    다음 입력 문자를 사용하십시오.

    “<“(U + 003C)
    태그 열기 상태로 전환합니다.

  2. 8.2.4.8 태그 열림 상태 :

    다음 입력 문자를 사용하십시오.

    “!” (U + 0021)
    마크 업 선언 열기 상태로 전환하십시오.

  3. 8.2.4.45 마크 업 선언 공개 상태 :

    다음 두 문자가 모두 “-“(U + 002D) 문자이면이 두 문자를 사용하고 데이터가 빈 문자열 인 주석 토큰을 ​​작성한 후 주석 시작 상태로 전환하십시오.

    그렇지 않으면 다음 7자가 “DOCTYPE”이라는 단어와 ASCII의 대소 문자를 구분하지 않으면 해당 문자를 사용하여 DOCTYPE 상태로 전환하십시오.

    그렇지 않으면, 조정 된 현재 노드가 있고 HTML 네임 스페이스에 요소가없고 다음 7 개의 문자가 문자열 “[CDATA [“(U +를 가진 5 개의 대문자 “CDATA”)와 대소 문자를 구분하는 경우 005B LEFT SQUARE BRACKET 문자 앞뒤), 해당 문자를 소비하고 CDATA 섹션 상태로 전환하십시오.

    그렇지 않으면 이것은 구문 분석 오류입니다. 가짜 댓글 상태로 전환합니다. 소비되는 다음 문자 (있는 경우)는 주석에 포함될 첫 번째 문자입니다.

    일련의 문자가 발생하는 경우에만 주석 시작 상태로 전환하라는 메시지가 표시됩니다 <!--. 그렇지 않으면 가짜 주석입니다. 이것은 8.1.6 항에 명시된 내용을 반영합니다.

  4. 8.2.4.44 가짜 댓글 상태 :

    첫 번째 “>”(U + 003E) 문자 또는 파일 끝 (EOF)을 포함하여 모든 문자를 사용하십시오. 데이터가 상태 머신이 가짜 주석 상태로 전환하게하는 문자를 포함하여 모든 문자의 연결을 포함하는 주석 토큰을 ​​방출합니다. 마지막으로 소비 된 문자 직전의 문자까지 (즉, 문자까지) U + 003E 또는 EOF 문자 바로 앞에 있지만 U + 0000 NULL 문자는 U + FFFD REPLACEMENT CHARACTER 문자로 바뀝니다. (파일의 끝까지 주석이 시작된 경우 (EOF) 토큰은 비어 있습니다. 마찬가지로 ” <!>” 문자열로 생성 된 토큰도 비어 있습니다.)

    일반 영어,이 턴 <!div displayed><!--div displayed--><!/div>로는 <!--/div-->, 정확히 같은 질문에 설명.

마지막으로, 다른 HTML5 호환 파서는 Chrome과 동일하게 작동 할 것으로 예상 할 수 있습니다.


답변

나는 이것이 <!마크 업 선언을 의미하기 때문에 좋은 습관이라고 생각하지 않습니다 <!DOCTYPE. 따라서 당신은 그것이 논평되었다고 생각합니다 (잘 … 브라우저는 그것을 해석하려고 시도 할 것입니다).

표시되지 않더라도 HTML 코드 주석을위한 올바른 구문이 아닌 것 같습니다.


답변