스크립트 태그 내에서 CDATA 섹션은 언제 필요합니까?
스크립트 태그에 CDATA 태그가 필요할 경우 언제 필요합니까?
즉, 언제, 어디에 있는지 확인합니다.
<script type="text/javascript">
//<![CDATA[
...code...
//]]>
</script>
이것보다 바람직하다:
<script type="text/javascript">
...code...
</script>
문서를 XML로 해석할 필요가 있는 경우(예를 들어 XHTML 페이지가 XML로 해석되는 경우)에는 CDATA 섹션이 필요합니다.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>
A CDATA
섹션은 전혀 영향을 주지 않습니다.그래서 네가 글을 써야 하는 거야
var x = '<' + '/script>'; // or
var x = '<\/script>';
또는 이와 유사합니다.
은, 로서 기능하는, XHTML 됩니다.text/html
(IE는 XML 콘텐츠타입을 지원하지 않기 때문에, 이것은 대부분 사실입니다).
XML
XML에서는 다른 규칙이 적용됩니다.(IE 이외의) 브라우저는 XHMTL 문서가 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 파서를 모두 사용하여 같은 페이지를 OK로 만들려면 스크립트태그를 XHTML의 CDATA 요소로 묶어야 합니다.HTML에서는 묶지 마십시오.
이 트릭은 CDATA 요소의 시작을 JavaScript 코멘트로 표시합니다.HTML에서는 JavaScript 파서는 CDATA 태그(코멘트)를 무시합니다.XHTML에서는 XML 파서(JavaScript보다 먼저 실행됨)가 이를 검출하고 CDATA가 끝날 때까지 나머지를 CDATA로 처리합니다.
X(HT)가 되다입니다.ML 음음음 like like like like like like like like like 등의 기호를 사용할 수 있습니다.<
★★★★★★★★★★★★★★★★★」>
예를 들어 두 정수를 비교하기 위해 JavaScript 내에서 이것은 XML처럼 구문 분석되어야 하므로 태그의 시작 또는 끝으로 표시됩니다.
행(CDA까지의 것을합니다.TA 음 음 ta 음 ( ( ( ( ( ( ( ( ta]]>
주세요.
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로 평가되기 전에 하위 요소로 취급되기 때문에 CDATA는 모든 XML 방언에서 필요합니다.이것이 JSLint가 JSLint에 대해 불만을 제기하는 이유이기도 합니다.<
정규식 문자
레퍼런스
검증이 필요한 경우(XML/XHTML - 감사합니다, 로렌 시걸).
이렇게 하면 오래된 브라우저가 Javascript 코드를 해석하지 않고 페이지가 파손되지 않습니다.
하위 호환성맘에 들거야.
언급URL : https://stackoverflow.com/questions/66837/when-is-a-cdata-section-necessary-within-a-script-tag
'IT' 카테고리의 다른 글
PHP에서 XMLReader를 사용하는 방법 (0) | 2023.01.01 |
---|---|
Python에서 .mat 파일 읽기 (0) | 2023.01.01 |
MySQL에서 INDEX, PARMY, UNIQURE, FULLTEXT의 차이점 (0) | 2023.01.01 |
크롬 네트:ERR_INCOMPLETE_CHUNKED_ENCODING 오류 (0) | 2023.01.01 |
JavaScript를 사용하여 문자열을 제목 대/소문자로 변환 (0) | 2023.01.01 |