반응형
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>
시도해 보았 니
"
또는 \x22
대신에
\"
?
자바 스크립트 이스케이프가 아닌 HTML 이스케이프 여야합니다. 변경 \"
에"
눈에 띄지 않는 방식으로 (jquery 또는 dojo와 같은 lib를 통해)이 작업을 수행하는 것에 대해 CMS에 동의하지만 다음과 같이 작동합니다.
<script type="text/javascript">
function parse(a, b, c) {
alert(c);
}
</script>
<a href="#x" onclick="parse('#', false, 'xyc"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>
반응형
'Programing' 카테고리의 다른 글
약속이 해결되기 전에 지시문이 렌더링됩니다. (0) | 2020.12.07 |
---|---|
모든 관계를 포함하여 Eloquent 객체를 복제 하시겠습니까? (0) | 2020.12.07 |
문자열을 "XML 안전"으로 만드는 방법은 무엇입니까? (0) | 2020.12.07 |
자바 스크립트 배열에서 요소를 제거하는 깨끗한 방법 (jQuery, coffeescript 사용) (0) | 2020.12.07 |
CPU가 SSE3 명령 세트를 지원하는지 확인하는 방법은 무엇입니까? (0) | 2020.12.07 |