본문 바로가기

컴퓨터/언어,프로그래밍

[JavaScript] 자바스크립트 오류 :: 종결되지않은 문자열상수

SCRIPT 태그는 XML 처럼 self closing tag를 사용하면 스크립트 태그의 끝을 인식하지 못한다. 

쉽게 말하자면 /> 을 사용하여 SCRIPT 태그를 닫으면 다음에 </script> 태그를 만날 때까지의 내용을 브라우저가 전혀 스크립트로 인식하지 않는다는 것이다. 위 코드를 다음과 같이 수정하면 매우 잘 작동한다.

<script src="test.js"></script>

 

스크립트 코드 내에 </script> 문자열이 포함되면 브라우저는 그것을 스크립트의 끝으로 간주해 버린다는 것이다.

예를 들어 다음과 같은 스크립트는 정상적으로 작동하지 않으며, "종결되지 않은 문자열 상수입니다" 라는 오류 메시지를 뿌린다.

 

<html>

<head>

<script language="javascript">

function test()

{

    alert("<script> and </script> test");

}

</script>

</head>

<body>

<input type="button" value="Test !" onclick="test()">

</body>

</html>

 

이유는 스크립트의 문자열 내에 사용된 </script> 문자열이 실제 스크립트의 종료 태그로 인식되어 버리기 때문이다.

이를 해결하기 위해서는 직접적으로 </script> 문자열이 스크립트 코드 내에서 사용되지 않도록 하면 된다. 

자바 스크립트의 경우 백슬래시 문자(\)를 사용하여 <\/script> 라는 문자열을 사용하면 된다. 

자바 스크립트는 백슬래시 문자를 무시하기 때문에 정상적으로 문자열이 처리된다. 

ASP 코드에서 많이 사용되는 VB 스크립트의 경우에는 chr(60) & "/script>" 와 같은 코드를 사용하여 직접적으로 </script> 라는 문자열이 사용되지 않도록만 하면 된다. 위 코드를 정상 작동하도록 수정하면 다음과 같다.

 

<html>

<head>

<script language="javascript">

function test()

{

    alert("<script> and <\/script> test");  // use back slash

}

</script>

</head>

<body>

<input type="button" value="Test !" onclick="test()">

</body>

</html>

 

 

  • PRB: The </SCRIPT> Tag Is Treated As a Closing Tag When Inside a Quoted String
    http://support.microsoft.com/kb/316174/en-us
  •  

    출처 : http://blog.naver.com/kkapjin/140034642489

    제주삼다수, 2L,... 오뚜기 진라면 매운... 상하목장 유기농 흰... 남양 프렌치카페 카... 고려인삼유통 홍삼 ... 종근당건강 오메가3... 요이치 카링 유무선...