Programing

JavaScript onClick 이벤트 핸들러에서 큰 따옴표 이스케이프

lottogame 2020. 12. 7. 07:41
반응형

JavaScript onClick 이벤트 핸들러에서 큰 따옴표 이스케이프


아래의 간단한 코드 블록은 정적 HTML 페이지에서 제공 될 수 있지만 JavaScript 오류가 발생합니다. onClick 핸들러 (예 : \ "xyz)에 포함 된 큰 따옴표를 어떻게 이스케이프해야합니까? HTML은 데이터베이스에서 데이터를 가져와 동적으로 생성됩니다.이 데이터는 단일 또는 이중을 가질 수있는 다른 HTML 코드의 스 니펫입니다. 큰 따옴표 문자 앞에 단일 백 슬래시를 추가하는 것은 트릭을 수행하지 않는 것 같습니다.

<script type="text/javascript">
    function parse(a, b, c) {
        alert(c);
    }
</script>

<a href="#x" onclick="parse('#', false, '<a href=\"xyz'); return false">Test</a>

시도해 보았 니

&quot; 또는 \x22

대신에

\"

?


자바 스크립트 이스케이프가 아닌 HTML 이스케이프 여야합니다. 변경 \"&quot;


눈에 띄지 않는 방식으로 (jquery 또는 dojo와 같은 lib를 통해)이 작업을 수행하는 것에 대해 CMS에 동의하지만 다음과 같이 작동합니다.

<script type="text/javascript">
function parse(a, b, c) {
    alert(c);
  }

</script>

<a href="#x" onclick="parse('#', false, 'xyc&quot;foo');return false;">Test</a>

barfs가 자바 스크립트 때문이 아니라 HTML 파서 때문입니다. 이스케이프 된 따옴표의 개념이 없습니다. 끝 따옴표를 찾기 위해 뒤죽박죽이되어 그것을 찾아서 onclick 함수로 반환합니다. 이것은 잘못된 자바 스크립트이므로 자바 스크립트가 함수를 실행하려고 할 때까지 오류에 대해 찾을 수 없습니다.


(\\")이스케이프 문자를 이스케이프 하기 위해 두 개의 백 슬래시 시도 할 수도 있습니다 .


가장 좋은 방법은 onclick 핸들러를 눈에 띄지 않게 할당하는 것 입니다.

이 같은:

window.onload = function(){
    var myLink = document.getElementsById('myLinkId');
    myLink.onclick = function(){ 
        parse('#', false, '<a href="xyz');
        return false;
    }
}

//...


<a href="#" id="myLink">Test</a>

참고 URL : https://stackoverflow.com/questions/1081573/escaping-double-quotes-in-javascript-onclick-event-handler

반응형