문제

스크립트 태그에 CDATA 태그가 필요한 경우가 있나요? 그렇다면 언제 필요한가요?

즉, 언제, 어디서:

<script type="text/javascript">
//<![CDATA[
...code...
//]]>
</script>

이것보다 바람직하다:

<script type="text/javascript">
...code...
</script>
도움이 되었습니까?

해결책

문서를 XML로 구문 분석해야 하는 경우 CDATA 섹션이 필요합니다(예:XHTML 페이지가 XML로 해석되는 경우) 그리고 당신은 문자 그대로 쓸 수 있기를 원합니다 i<10 그리고 a && b 대신에 i&lt;10 그리고 a &amp;&amp; b, XHTML은 기본적으로 문자 데이터가 아닌 구문 분석된 문자 데이터로 JavaScript 코드를 구문 분석하기 때문입니다.이는 외부 소스 파일에 저장된 스크립트에서는 문제가 되지 않지만 XHTML의 모든 인라인 JavaScript에서는 아마 CDATA 섹션을 사용하고 싶습니다.

많은 XHTML 페이지는 XML로 구문 분석되도록 의도되지 않았으며 이 경우 문제가 되지 않습니다.

주제에 대한 좋은 글을 보려면 다음을 참조하세요. https://web.archive.org/web/20140304083226/http://javascript.about.com/library/blxhtml.htm

다른 팁

브라우저가 마크업을 XML로 처리하는 경우:

<script>
<![CDATA[
    ...code...
]]>
</script>

브라우저가 마크업을 HTML로 처리하는 경우:

<script>
    ...code...
</script>

브라우저가 마크업을 HTML로 처리하고 XHTML 1.0 마크업(예:)을 검증하려는 경우.

<script>
//<![CDATA[
    ...code...
//]]>
</script>

HTML

HTML 파서는 다음과 같은 모든 것을 처리합니다. <script> 그리고 </script> 스크립트의 일부로. 일부 구현에서는 올바른 닫는 태그가 필요하지도 않습니다."에서 스크립트 해석을 중지합니다.</"에 따르면 이는 정확하다. 명세서.

업데이트 HTML5와 현재 브라우저에서는 더 이상 그렇지 않습니다.

따라서 HTML에서는 다음과 같습니다. ~ 아니다 가능한:

<script>
var x = '</script>';
alert(x)
</script>

CDATA 섹션에는 전혀 효과 없음.그렇기 때문에 글을 써야 합니다.

var x = '<' + '/script>'; // or
var x = '<\/script>';

또는 유사합니다.

이는 다음으로 제공되는 XHTML 파일에도 적용됩니다. text/html.(IE는 XML 콘텐츠 유형을 지원하지 않으므로 이는 대부분 사실입니다.)

XML

XML에서는 다른 규칙이 적용됩니다.IE가 아닌 브라우저는 XHMTL 문서가 XML 콘텐츠 유형으로 제공되는 경우에만 XML 파서를 사용합니다.

XML 파서에는 script 태그는 다른 태그보다 나을 것이 없습니다.특히, 스크립트 노드에는 "에 의해 트리거되는 텍스트가 아닌 하위 노드가 포함될 수 있습니다.<";그리고 "&" 기호는 문자 개체를 나타냅니다.

따라서 XHTML에서는 다음과 같습니다. ~ 아니다 가능한:

<script>
if (a<b && c<d) {
    alert('Hooray');
}
</script>

이 문제를 해결하려면 전체 스크립트를 CDATA 부분.이는 파서에게 다음을 알려줍니다.'이 섹션의, 치료하지 마세요 "<" 그리고 "&"를 제어 문자로. ' JavaScript 엔진이 해석하는 것을 방지합니다.<![CDATA[" 그리고 "]]>" 표시가 있는 경우 주석으로 묶을 수 있습니다.

스크립트에 "<" 또는 "&", 너한테는 필요 없어. CDATA 어쨌든 섹션.

기본적으로 XHTML과 HTML을 모두 사용하는 문서를 작성할 수 있도록 하는 것입니다.문제는 XHTML 내에서 XML 파서가 &,<,> 문자를 해석한다는 것입니다. 스크립트 태그가 추가되어 XML 구문 분석 오류가 발생합니다.따라서 다음과 같은 엔터티를 사용하여 JavaScript를 작성할 수 있습니다.

if (a &gt; b) alert('hello world');

그러나 이것은 비실용적이다.더 큰 문제는 HTML로 페이지를 읽으면 태그가 스크립트 CDATA는 '기본적으로' 간주되며 이러한 JavaScript는 실행되지 않습니다.따라서 XHTML과 HTML 파서를 사용하여 동일한 페이지를 확인하려면 다음을 묶어야 합니다. 스크립트 XHTML의 CDATA 요소에 태그를 추가하되 HTML로 묶지는 마세요.

이 트릭은 CDATA 요소의 시작을 JavaScript 주석으로 표시합니다.HTML에서 JavaScript 파서는 CDATA 태그(주석)를 무시합니다.XHTML에서는 XML 파서(JavaScript 이전에 실행됨)가 이를 감지하고 CDATA 끝까지 나머지를 CDATA로 처리합니다.

X(HT)ML 문제입니다.다음과 같은 기호를 사용할 때 < 그리고 > JavaScript 내에서, 예를 들어두 정수를 비교하려면 XML처럼 구문 분석해야 하므로 태그의 시작 또는 끝으로 표시됩니다.

CDATA는 다음 줄(다음 줄까지의 모든 것)을 의미합니다. ]]> XML이 아니므로 그런 식으로 구문 분석하면 안 됩니다.

하다 ~ 아니다 HTML4에서 CDATA를 사용하지만 ~해야 한다 XHTML에서 CDATA를 사용하고 ~ 해야 하다 < 및 >와 같이 이스케이프 처리되지 않은 기호가 있는 경우 XML에서 CDATA를 사용하세요.

외부에서 참조되지 않고 페이지에 JavaScript가 포함되어 있을 때 XHTML 유효성 검사가 올바르게 작동하는지 확인하기 위한 것입니다.

XHTML에서는 페이지가 XML 마크업 요구 사항을 엄격하게 준수해야 합니다.JavaScript에는 특별한 의미를 지닌 문자가 포함될 수 있으므로 유효성 검사에서 잘못된 형식으로 표시되지 않도록 CDATA로 래핑해야 합니다.

웹의 HTML 페이지를 사용하면 및 태그 사이에 필수 JavaScript를 포함할 수 있습니다.웹 페이지에서 HTML의 유효성을 검사할 때 JavaScript 콘텐츠는 CDATA(문자 데이터)로 간주되므로 유효성 검사기에서 무시됩니다.웹 페이지 설정 시 최신 XHTML 표준을 따르는 경우에도 마찬가지입니다.XHTML을 사용하면 스크립트 태그 사이의 코드가 유효성 검사기에 의해 처리되는 PCDATA(구문 분석된 문자 데이터)로 간주됩니다.

이 때문에 웹 페이지를 '해제'하지 않고 페이지의 스크립트 태그 사이에 JavaScript를 포함할 수는 없습니다(적어도 유효성 검사기에 관한 한).

당신은 배울 수 있습니다 CDATA에 대한 자세한 내용은 여기를 참조하세요., 그리고 XHTML에 대한 자세한 내용은 여기를 참조하세요..

CDATA는 내용이 XML이 아님을 나타냅니다.

에 대한 설명은 다음과 같습니다. 위키피디아

엄격한 XHTML 준수를 원하는 경우 CDATA가 필요하므로 미만 및 앰퍼샌드가 잘못된 문자로 표시되지 않습니다.

xhtml 유효성 검사 중에 xml 오류를 방지합니다.

CDATA는 브라우저에 텍스트를 HTML로 렌더링하지 않고 있는 그대로 표시하도록 지시합니다.

CDATA는 내용이 XML이 아님을 나타냅니다.

XML 노드 내의 텍스트는 JavaScript로 평가되기 전에 하위 요소로 처리되므로 모든 XML 방언에서 CDATA가 필요합니다.이것이 이유이기도 하다. JSLint가 불평합니다. 대한 < 정규식의 문자.

참고자료

유효성을 검사하고 싶을 때 (XML/XHTML에서 - 감사합니다. 로렌 시걸).

이렇게 하면 이전 브라우저가 Javascript 코드를 구문 분석하지 않고 페이지가 중단되지 않습니다.

이전 버전과의 호환성.정말 좋아할 것 같아요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top