[javascript] 스크립트 태그 내에서 CDATA 섹션은 언제 필요합니까?
인가 CDATA의 태그 그래서 스크립트 태그 그리고 만약 적 필요?
다른 말로하면, 언제, 어디서?
<script type="text/javascript">
//<![CDATA[
...code...
//]]>
</script>
이것보다 선호 :
<script type="text/javascript">
...code...
</script>
답변
당신이 XML로 구문 분석에 문서를해야 할 경우 CDATA 섹션이 필요합니다 (예를 들어, XHTML은 페이지가 XML로 해석됩니다 경우) 당신은 문자 그대로 쓸 수 있기를 원하는 i<10
및 a && b
대신 i<10
하고a && b
, XHTML은 구문 분석 된 문자 데이터로 자바 스크립트 코드를 파싱로 기본적으로 문자 데이터와 반대입니다. 이것은 외부 소스 파일에 저장된 스크립트의 문제는 아니지만 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에서는 다른 규칙이 적용됩니다. XHMTL 문서가 XML 컨텐츠 유형으로 제공되는 경우 (비 IE) 브라우저는 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 > 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입니다. <
and와 같은 기호를 사용할 때>
예를 들어, 두 정수를 비교하기 위해 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 에 대한 자세한 내용은 여기 에서 확인할 수 있습니다 .