답변
현대 브라우저 파서 (HTML5의 파싱 알고리즘을 사용하는 즉, 사람들은) 다음과 같이 작동합니다. 문자 또는 새 태그가 다음에 나타날 것으로 예상하고 <!
을 보면 다음 몇 문자가 --
또는 DOCTYPE
인지 확인하거나 포함 된 SVG 또는 MathML을 처리하는 경우 [CDATA[
인지 확인합니다. <!- foo
의 경우와 같이,
하면 (http://dev.w3.org/html5/spec/tokenization.html#markup-declaration-open-state 참조),이 경기의 아무도는 파서는 다음 >
까지 다음의 모든 문자는 주석으로 읽기 및 변환됩니다 bogus comment state 넣어 수를 입력하지 DOM에 넣는다.
따라서 사용자가 <!-
과 같이 보이는 동작은 주석 시작과 같습니다. 이러한 동작은 깨진 마크 업에 대한 "복구"동작이므로이 마크 업을 신뢰하지 않는 것이 좋습니다.
당신은 마크 업이 여기에 DOM을 형성하는 방법을 볼 수 있습니다 Live DOM Viewer
는 또한이 @Amber의 말씀에 차이가 있습니다. 의미있는 의미에서 태그로 취급되지 않으며 확실히 무시되지 않습니다.
실제로 작동하지 않습니다. 단지 실제 태그로 해석 한 다음 해당 태그를 유효하지 않은 것으로 표시합니다.
<!- foo bar -->
분명히 표준 HTML 태그가 아닌 태그,
<!-foo bar-->
로 취급되고, 따라서 무시됩니다.
이를 시도하고 당신은 진정한 주석으로 작동하지 않습니다 볼 수 있습니다 :
<!- >foo bar-->
또 다른 질문이 있습니다. 컴파일러/인터프리터가 주석을 읽을 수없는 경우 어떻게 읽지 못하는지 테스트 할 수 있습니까 (필자의 예처럼)? –
@pop [html validator] (http://validator.w3.org/)를 사용하십시오. – nobody
다음'->'(주석의 닫는 문자)가 아닌 다음'>'(태그의 닫는 문자)까지 구문 분석된다는 의미에서 "태그로 처리" . 표시된 페이지의 텍스트에 영향을주지 않고 주석으로 사용된다는 의미에서 "무시 됨". – Amber