아래의 코드를 보자.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>G-Test 5</title>
</head>
<body>
 <script type="text/javascript">
//<![CDATA[
  var testval = "<!--";
//]]>
 </script>
 <div>겐도 오빠 사랑해</div>
 <!-- 정말? -->
 <div>ㅇㅇ</div>
 <script type="text/javascript">
//<![CDATA[
  var testval2 = "-->";
//]]>
 </script>
</body>
</html>

파이어폭스는 나의 사랑을 잘 표현해 주고 있다.
사용자 삽입 이미지

FireFox 2 on Vista


허나 IE 7. 로딩부터 심상치 않다.
사용자 삽입 이미지

IE7 on Vista

그리고는 깔끔한 흰 화면을 보여준다.
사파리는 거의 기대를 말자. "<!--"가 미리 처리되어 많은 브라우저들이 "-->"까지 날려준다. 위처럼 script 영역을 벗어나는 주석태그가 있는 경우 오동작 한다. 오동작이 맞는지는 모르겠다. HTML Spec을 아무리 읽어봐도 어느것을 먼저 해석해야 하는지에 대해선 모르겠다.

아무튼 자바스크립트 영역에 뭔가 출력할땐 조심하자.

저 문서의 타이틀에서 살짝 보이듯이 곧 "G-Test Pattern V5" 공개하겠습니다.
이올린에 북마크하기(0) 이올린에 추천하기(0)

Trackbas address :: http://gendoh.com/trackback/2511062

  1. Tracked from 까먹지말자! at 2008/06/25 02:30  삭제

    Subject: XHTML과 CDATA의 문제점

    예전에 CDATA는 운이 좋으면 해석될 뿐..이라는 글을 읽고서는, 나도 같은 문제로 고민한 적이 있어서 정리해 둬야 겠다 싶어서 글을 쓴다. XHTML은 그 자체로 완전히 유효한 XML이어야 한다. XML은 CDATA 섹션(&lt;![CDATA ~ ]]&gt;)이라는 것을 지원하는데, 이 영역 안에 들어갈 경우에는 &lt;,&gt;, &amp; 기호 같은 특수문자들이 자동으로 &amp;lt;, &amp;gt;, &amp;amp;로 변환되는......

  1. Commented by daybreaker at 2008/05/26 05:57

    헐.... 이런 문제가 있군요;;;;; 덜덜덜
    그래도 string literal로 보는 게 맞지 않을까 싶은데....ㅠㅠ;;

    테스트 패턴에 이어 해결 방법(?)도 알려주시면 더욱 좋을 것 같군요. (혹시 해결 방법이 저런 문자열을 출력하지 말자..라거나 entity 인코딩하자...라면..-_-a) 이를 테면 strict DTD에서는 결과가 다르다든지 IE8은 어떤지라든지 content-type에 application/xhtml+xml을 지정하면 어떻게 바뀐다든지 말이죠..; (너무 많은 걸 요구했나요..-_-)

    ps. 스크린샷에서 구글 툴바, 웹디벨로퍼 확장기능은 굳이 모자이크 처리하지 않으셔도..=3=3

    • Commented by 겐도 at 2008/05/26 06:33

      상황에 따라 처리방법이 다를 수 있습니다. 그래서 문제만 지적하고 해결책은 제시할 수 없습니다. 특히 타입 같은 것은 이미 레거시가 있어가 제한이 있어 쉽게 바꿀 수 있는 부분은 아니죠. 현재 상황에서 어떻게든 저런 스트링들이 잘 처리되도록 최선을 다할 뿐입니다.
      모자익 처리는... 그냥 심심해서요 :)