주석을 추가하면 파서가 중단되는 이유는 무엇입니까?
이 질문에 이미 답변이 있습니다.
</script>
주석을 추가 하면 파서가 중단되는 이유는 무엇 입니까? 이것은 버그입니까 아니면 내가 간과 한 문서에 무언가가 있습니까?
나는 이것을 Chrome, Firefox, Opera, Internet Explorer에서 테스트했으며 모두 동일한 결과를 생성합니다.
한 줄 주석 :
function Foo(){
// </script>
alert("bar");
};
Foo();
여러 줄 주석 :
function Foo(){
/*
</script>
*/
alert("bar");
};
Foo();
이것은 W3C에서 정의한 HTML 파서가 JavaScript 파서와 완전히 분리되어 있기 때문에 발생합니다. <script>
태그 뒤에는 </script>
JS 코드를 일반 텍스트로 취급하기 때문에 주석이나 문자열 내부에 있든 상관없이 닫는을 찾습니다 .
HTML 구문 분석기는 JavaScript를 구문 분석하지 않습니다. <tag>
및 </tag>
태그로 표시된 HTML 요소 만 구문 분석 합니다. 무언가가 JavaScript 주석이라는 사실은 모릅니다. 가 볼 때 </script>
닫는 태그를,이 스크립트 요소가 폐쇄되고 가정합니다. 문자열이 </script>
나타나는 모든 컨텍스트에서 동일하게 발생합니다 . 예를 들어 console.log("</script>")
동일한 동작을 생성합니다.
이것은 HTML 내부에 스크립트를 포함하는 것이 아니라 외부 적으로 포함하는 것이 좋은 이유입니다.
포함 된 JavaScript 코드를 HTML로 이스케이프 할 수 있습니다.
<script type="text/javascript">
<!--
function Foo(){
// </script>
alert("bar");
};
Foo();
//-->
</script>
따라서 전체 JavaScript 코드는 HTML 파서에서 HTML 주석으로 처리되고 HTML 주석 행은 JavaScript 인터프리터에서 무시됩니다.
더 쉬운 해결 방법은 주석을 포함하는 것입니다.
function Foo(){
//<!-- </script> -->
alert("bar");
};
Foo();
javascript 및 html에 대한 줄을 주석으로 처리합니다.
참고 URL : https://stackoverflow.com/questions/32860237/why-does-adding-script-in-a-comment-break-the-parser
'Nice programing' 카테고리의 다른 글
Optional.ifPresent ()의 적절한 사용 (0) | 2020.10.26 |
---|---|
dplyr을 사용하여 여러 열의 합계 (0) | 2020.10.26 |
Javascript / CSS를 통해 HTML / 이미지를 뒤집는 브라우저 간 방법? (0) | 2020.10.25 |
PowerShell을 사용하여 폴더의 항목 계산 (0) | 2020.10.25 |
C #과 유사한 JavaScript에서 숫자 형식 지정 (0) | 2020.10.25 |