스크립트의 이중 하이픈은 Firefox가 이상하게 렌더링합니다
-
13-09-2019 - |
문제
<!-- <script type="text/javascript">/*<![CDATA[*/ c-- ;//]]></script> -->
위의 줄이있을 때u003Chead> 일반 HTML 페이지의 섹션, Firefox 3.5.5는 후행을 텍스트로 렌더링합니다. C-를 C-로 변경하면 그렇지 않습니다. 여기서 무슨 일이 일어나고 있는지 아이디어가 있습니까? 크런치 된 매우 큰 스크립트로 인해이 페이지에 인공물을 얻습니다. 나는 진술을 c- = 1으로 변경하고 지금은 문제를 피할 수 있지만 .... 비트/바이트가 내 a $$를 물고 있는지 알고 싶습니다.
해결책
이는 Firefox가 SGML (HTML을 기반으로 한)을 엄격하게 구현했기 때문입니다. 문서가 표준 모드로로드 된 경우에만 발생합니다 (즉, DocType가 있습니다).
첫번째 <!
댓글을 시작합니다. 첫번째 --
섹션에 들어갑니다 >
문자가 허용됩니다. 두번째 --
(스크립트에서) 섹션을 남겨 둡니다. >
문자가 허용됩니다. 그만큼 >
끝에 </script>
그런 다음 주석을 종료합니다. 다음과 같은 -->
따라서 더 이상 주석의 일부가 아니며 텍스트로 렌더링됩니다.
보다 http://www.howtocreate.co.uk/sgmlcomments.html 이 문제에 대한 포괄적 인 안내서.
또한 주목할 가치가 있습니다 HTML 4 사양 '저자는 두 개 이상의 인접 하이픈을 주석 안에 두는 것을 피해야한다'고 말합니다. HTML 5 사양 댓글은 '두 개의 연속 U+002D 하이픈-미니 누스 문자 (-)를 포함해서는 안됩니다.
당신이 찾은 해결책은 --
의견의 중간에.
다른 팁
기술적으로 HTML (또는 XML)의 의견에 이중 하이픈을 가질 수 없습니다. 따라서 브라우저가 유효하지 않은 경우 브라우저가 "허용"하더라도 HTML 유효성 검사기에 실패해야합니다.
나는 이것을 복제 할 수 없다. 3.0.1에 나타나지 않습니다.